Existe-t-il un moyen de créer une table avec une colonne d'horodatage par défaut à maintenant?
L'un des éléments suivants réussit à la création mais échoue à l'insertion.
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);
Puis sur insert:
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.
J'ai essayé d'autres saveurs comme ci-dessous mais toutes échouent.
a) Essayé avec maintenant entre guillemets simples "maintenant", la création a réussi mais a échoué avec une autre erreur
b) Essayé sans fuseau horaire, création réussie, échec de l'insertion.
Vous pouvez utiliser SYSDATE
ou GETDATE()
pour mettre une valeur d'horodatage actuelle. Voici un exemple.
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)