web-dev-qa-db-fra.com

Redshift: création d'une table avec la colonne Timestamp par défaut à Now ()

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.

14
isaac.hazan

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)
29
Masashi Miyazaki