2014-10-07 3 views
0

Сегодня я обнаружил, что многие из моих производственных баз данных имеют следующую дату для столбца с именем status_update, который устанавливает ТОЛЬКО функцию now().postgresql now() функция вернулась в будущем date

Большинство дат на 8 октября:

  • 2014-10-08 08: 20: 42,97564
  • 2014-10-08 16: 31: 30,304743
  • т.д.

Но некоторые из них:

  • 2014-10-09 08: 31: 44,775589
  • 2014-10-10 08: 50: 24,235533
  • 2014-10-13 10: 42: 20,038917
  • т.д.

Пожалуйста, кто может мне помочь с этим вопросом? Как это могло произойти?

Мое приложение построено на PHP. Текущее время - 2014-10-07 17:35:00.

SELECT now() возвращает 2014-10-07 17:35:56.192627+01

Спасибо заранее.

UPDATE

Моя вина, я пропустил pjobdate + current_time выражение, которое используется для установки значения для status_update. Сожалею.

+1

'now()' не устанавливает столбец ни в одной таблице. Пожалуйста, покажите нам свою логику (т. Е. Ваш триггер), которая обновляет этот столбец. – pozs

+0

привет @pozs, благодаря вам Я проверил все функции и триггеры и нашел это выражение 'pjobdate + current_time' для установки значения для status_update. Я удивился, когда подумал, что изучил проект. – alex23

ответ

0

Вероятно, проблема часовых поясов см: Local time zone offset in PostgreSQL

и попробовать

SELECT current_setting('TIMEZONE'); 

Это, вероятно, справедливо для 2014-10-08 дат, те далеко в будущем, вероятно, с даты становясь где-то в другом месте. Я бы посмотрел на ВСЕ местоположения, где этот столбец обновляется, триггеры, процедуры, код PHP и т. Д.

+0

Спасибо за ваш ответ. У всех баз данных есть часовой пояс «Европа/Лондон», как и должно быть. Да, я проверил все местоположения, как вы советовали. Проект довольно большой, возможно, я что-то пропустил, я дам вам знать, когда найду что-нибудь. – alex23

Смежные вопросы