МЕЖДУ не ведет себя инклюзивным образом - PullRequest
0 голосов
/ 10 октября 2018

У меня есть запрос, который возвращает данные из таблицы на основе идентификатора пользователя и двух дат.Все даты выглядят так: 2018-10-07T00:00:00.000Z 2018-10-06T00:00:00.000Z ... и т. Д.

Большую часть времени запрос будет предоставлять диапазон дат, например:

SELECT * FROM "some_table" WHERE (user_id = 3 AND TIMESTAMP BETWEEN '2018-10-01' AND '2018-10-05') ORDER BY TIMESTAMP DESC

Но иногда пользователи могут указать один день, и в этом случае запрос будет выглядеть следующим образом:

SELECT * FROM "some_table" WHERE (user_id = 3 AND TIMESTAMP BETWEEN '2018-10-05' AND '2018-10-05') ORDER BY TIMESTAMP DESC

Насколько я понимаю, BETWEEN должен быть включительным ... может кто-нибудь помочь мне понятьпочему нет данных?

1 Ответ

0 голосов
/ 10 октября 2018

Отметка времени '2018-10-05' понимается как 2018-10-05T00:00:00.000Z, поэтому ваш диапазон составляет от 2018-10-05T00:00:00.000Z до 2018-10-05T00:00:00.000Z, всего одну миллисекунду.Включите в ваш запрос часы, минуты и секунды или увеличьте конечную дату на один день, когда и начальная, и конечная даты совпадают.

Чтобы избежать этой проблемы чуть более надежно, вы можетене стоит использовать BETWEEN с датами вообще.Вместо этого используйте что-то вроде TIMESTAMP >= '2018-10-05' AND TIMESTAMP < '2018-10-06'.

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