Не удается вставить дату (Y-m-d H: i: s) в Postgres «timestamp»

#postgresql #cakephp #timestamp

#postgresql #cakephp #временная метка

Вопрос:

Я пытаюсь вставить данные в Postgres с помощью cakephp, который включает дату.

Столбец в моей базе данных — a timestamp without timezone , и у меня есть строка datetime "Y-m-d H:i:s" (также пробовал с int).

Должен ли я использовать это значение?

Комментарии:

1. Пожалуйста, покажите нам ваше заявление и ваше сообщение об ошибке.

2. Можете ли вы привести пример для конкретного значения и, возможно, также используемого оператора INSERT?

Ответ №1:

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

Не путайте дату (‘2011-10-21’) с меткой времени (‘2011-10-21 12:10:23’).
Это совершенно законно для метки времени:

 INSERT INTO tbl (timestamp_col)
VALUES ('2011-01-01 0:0:0');
 

Но вам нужно указать дату, в результате чего в данном случае получится ‘2011-01-01 0:0:0’:

 INSERT INTO tbl (timestamp_col)
VALUES ('2011-01-01'::timestamp);
 

Формат ISO 8601 «гггг-мм-дд» для даты и «гггг-мм-дд чч: мм: сс» для временной карты однозначны для любого языка. Другие форматы могут зависеть от вашего языка.

Ответ №2:

используйте

 'Y-m-d H:i:s'::timestamp
 

Не забывайте об одинарных кавычках

например

 select '2011-01-01'::timestamp
 

Комментарии:

1. Я провел часы с Google, и всего через секунду после публикации моего вопроса здесь я нашел причину, по которой мое утверждение выдает ошибку…

2. Поле ожидало массив. Теперь я изменил ее, и, похоже, она работает.