Вот код в 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?
Основываясь на вашем комментарии
Я просто набираю эти коды в PgAdmin.
Похоже, вы используете PostgreSQL, а не MySQL.
Вы можете просмотреть существующий код, запущенный на PostgreSQL, в действии на PostgreSQL здесь, который дает ту же ошибку, что и вы выше.
Чтобы правильно работать с датами в PostgreSQL, вы можете просмотреть список функций даты на сайте документации PostgreSQL здесь
То, что вы пытаетесь сделать, это следующее:
SELECT TIMESTAMP '2010-11-19 01:11:22' + INTERVAL '4 HOURS';
Преобразуйте его просто в timestamp с методом strtotime, а затем вы можете делать все, что вам нравится, с помощью
Я нашел метод, который работает для меня в PHP:
$desiredEndTime = strtotime("2010-11-19 01:11:22 + 10 hours");
echo date("Y-m-d H:i:s", $desiredendtime);
Похоже, он преобразует дату/время в странное целое число. А затем на второй строке он преобразует его обратно в мой желаемый формат. Теперь я могу просто вставить это обратно в SQL.
Благодарю!
select DATE_ADD('2010-11-19 01:11:22',INTERVAL 4 HOUR)
работает для меня ...