Использование INTERVAL в PostgreSQL для добавления часов даты / времени

0

Вот код в PostgreSQL, который я пытаюсь запустить:

select DATE_ADD(whenbooked,INTERVAL 4 HOUR) from booking WHERE id = 12310;

ИЛИ Я пытаюсь запустить этот код:

select DATE_ADD('2010-11-19 01:11:22',INTERVAL 4 HOUR)

Оба кода получают доступ к дате/времени, хранящимся таким же образом:

2010-11-19 01:11:22

Код ошибки PostgreSQL:

ОШИБКА: ошибка синтаксиса на уровне или около "4"

это означает "4" в строке "INTERVAL 4 HOUR".

Я не могу понять, в чем проблема.

Мне нужно сравнить время/штамп (записанный в точно таком же формате, как указано выше) с сохраненным временем/датой PLUS 4 часа. Поэтому желаемый конечный результат - возвращение: '2010-11-19 05:11:22'.

Если это можно сделать на PHP или непосредственно в SQL?

  • 0
    Можете ли вы показать это с вашим PHP-кодом? Я предполагаю, что там должны быть некоторые проблемы с цитатами.
  • 2
    select DATE_ADD('2010-11-19 01:11:22',INTERVAL 4 HOUR) работает для меня ...
Показать ещё 5 комментариев
Теги:
database
datetime

3 ответа

2
Лучший ответ

Основываясь на вашем комментарии

Я просто набираю эти коды в PgAdmin.

Похоже, вы используете PostgreSQL, а не MySQL.

Вы можете просмотреть существующий код, запущенный на PostgreSQL, в действии на PostgreSQL здесь, который дает ту же ошибку, что и вы выше.

Чтобы правильно работать с датами в PostgreSQL, вы можете просмотреть список функций даты на сайте документации PostgreSQL здесь

То, что вы пытаетесь сделать, это следующее:

SELECT TIMESTAMP '2010-11-19 01:11:22' + INTERVAL '4 HOURS';
  • 0
    Большое спасибо за объяснение этого и предоставление ответа, который работает! : D
0

Преобразуйте его просто в timestamp с методом strtotime, а затем вы можете делать все, что вам нравится, с помощью

0

Я нашел метод, который работает для меня в PHP:

$desiredEndTime = strtotime("2010-11-19 01:11:22 + 10 hours");
echo date("Y-m-d H:i:s", $desiredendtime);

Похоже, он преобразует дату/время в странное целое число. А затем на второй строке он преобразует его обратно в мой желаемый формат. Теперь я могу просто вставить это обратно в SQL.

Благодарю!

  • 0
    Я добавил ответ, который объясняет, почему он не работал в чистом SQL для вас, включая исправление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню