#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. Поле ожидало массив. Теперь я изменил ее, и, похоже, она работает.