PostgresSQL - дата работает странно - PullRequest
0 голосов
/ 17 января 2019

Мне нужно создать select для всех строк, которые в данный момент старше 15 минут.

SELECT last_answer_date FROM messages WHERE last_answer_date > NOW() - INTERVAL '15 minutes';

Когда я запускаю этот выбор сейчас в 16:51:00, я получаю результат:

2019-01-17 16:25:00

Другими словами, я имею в виду:

Дайте мне все строки where last_answer_date > 16:51:00 - 15 minutes (потому что теперь 16:51:00)

Дайте мне все строки `где last_answer_date> 16:36:00 (потому что сейчас 16:51:00 - 15 минут = 16:36:00)

И я получаю 16:25:00, но 16:25:00 <<code>16:36:00

РЕДАКТИРОВАТЬ: Когда я изменяю> до < Я получаю 2019-01-16 17:50:27

РЕДАКТИРОВАТЬ2 : Пример:

SELECT insert_date FROM smev_messages WHERE insert_date < NOW() - INTERVAL '15 minutes';  

сейчас = 17:16

enter image description here

изменить на SELECT insert_date FROM smev_messages WHERE insert_date > NOW() - INTERVAL '15 minutes';

17: 17

enter image description here

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Если у вас большая таблица с большим количеством данных, у вас будут проблемы с производительностью, потому что при вызове

СЕЙЧАС () - ИНТЕРВАЛ Внутренняя обработка после 15 минут должна преобразовать ваш интервал в дату Интервал послепечатной обработки

Я думаю, что лучший способ сделать это - это сделать что-то подобное для повышения производительности, потому что все даты являются длинными значениями, и вы должны сравнивать их как длинные значения.

-- 15 minutes in millis = 900000 
-- 15 minutes in secods = 900
-- Retrive all data inserted at latest 15 minutes
SELECT last_answer_date FROM messages WHERE (NOW() - last_answer_date) < 900;
-- Retrive all data inserted more than 15 minutes
SELECT last_answer_date FROM messages WHERE (NOW() - last_answer_date) > 900;
0 голосов
/ 17 января 2019

Я думаю, что это может быть проблема с вашим часовым поясом. Вы можете проверить это с помощью show timezone; Или просто наберите select now() и посмотрите, соответствует ли оно вашим ожиданиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...