Redshift:创建时间戳列默认为 Now() 的 table

Redshift: creating a table with Timestamp column defaulting to Now()

有没有办法创建一个 table 时间戳列默认为现在?

以下任意一项创建成功但插入失败。

CREATE TABLE MyTable
(
device_id         VARCHAR(64) NOT NULL encode lzo,
app_id            VARCHAR(150) NOT NULL distkey encode lzo,
retrieval_date    TIMESTAMP without time zone default (now() at time zone 'utc') encode lzo
)
diststyle key
compound sortkey(app_id,device_id);

然后插入:

     insert into MyTable (device_id,app_id) values('a','b');
INFO:  Function "timezone(text,timestamp with time zone)" not supported.
INFO:  Function "now()" not supported.
ERROR:  Specified types or functions (one per INFO message) not supported on Redshift tables.

我尝试了以下其他口味,但都失败了。

a) 尝试使用 now 单引号 'now' ,创建成功但因另一个错误而失败

b) 试过没有时区,创建成功,插入失败。

您可以使用 SYSDATEGETDATE() 来放置当前时间戳值。这是一个例子。

dev=> create table my_table (id int, created_at datetime default sysdate);
CREATE TABLE

dev=> insert into my_table (id) values (1);
INSERT 0 1

dev=> select * from my_table;
 id |        created_at
----+---------------------------
  1 | 2016-01-04 19:07:14.18745
(1 row)