Тип переменной Datetime устарел в PostgreSQL 9.0.x? - PullRequest
3 голосов
/ 29 ноября 2011

Я запрашиваю внешний API и хочу проверить вставку данных на тестовом сервере, прежде чем перейти к производству.

В настоящее время я пытаюсь выполнить следующий оператор в оболочке Postgres:

CREATE TABLE referrals (client_id VARCHAR(36), device_id VARCHAR(100), conversion_time DATETIME, acquisition_cost MONEY);

, но он продолжает сбой на DATETIME.

Поскольку это не работает, будет ли отметка времени?Если да, то как мне изменить поведение метки времени по умолчанию, чтобы оно учитывало предварительно отформатированные даты и время?

PS. Пожалуйста, отметьте вместо downvote, если это лучше задать в StackExchange администраторов баз данных.

Ответы [ 2 ]

7 голосов
/ 29 ноября 2011
CREATE TABLE referrals (
   client_id text, 
   device_id text, 
   conversion_time timestamp,
   acquisition_cost money
);

Вам не нужно добавлять without time zone, , который является значением по умолчанию .

Я использую тип text в примере вместо varchar смодификатор длины, потому что обычно это лучший выбор.Конечно, вы можете использовать varchar(n), без проблем.

Формат допустимого ввода строки для значений даты / времени зависит от ваших настроек локали .Чтобы убедиться, что определенный формат интерпретируется правильно, независимо от настроек локали, вы можете использовать to_date или to_timestamp:

SELECT to_timestamp('05 Dec 2000', 'DD Mon YYYY')

Подробнее в главе Функции форматирования типов данных мелкого руководства.

0 голосов
/ 29 ноября 2011

Я считаю, что тип данных, который вы ищете - timestamp without time zone, поэтому измените ваш DDL на:

CREATE TABLE referrals (
   client_id VARCHAR(36), 
   device_id VARCHAR(100), 
   conversion_time TIMESTAMP without time zone, 
   acquisition_cost MONEY
);
...