Как фильтровать данные между датой и временем в sqlite - PullRequest
0 голосов
/ 21 октября 2018

У меня есть таблица Orders с Order_Date типом данных smalldatetime и моим форматом Order_Date 01/10/2018 10:00:00 PM

Теперь я хочу фильтровать данные между 01/10/2018 04:00:00 PM AND 02/10/2018 04:00:00 AM

То, что я пытался

SELECT distinct(Order_No),Order_Date from Orders WHERE Order_Date BETWEEN '01/10/2018 04:00:00 PM' and '02/10/2018 04:00:00 AM'

Этот запрос показывает только 01/10/2018 Данные, но мне нужны данные МЕЖДУ 01/10/2018 04:00:00 PM и 02/10/2018 04:00:00 AM

Есть ли способ получить данные изсегодня 4PM на следующий день 4AM?

1 Ответ

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

Во-первых, sqlite не имеет фактических типов даты / времени.Это простая база данных с несколькими типами.Ваш столбец smalldatetime на самом деле имеет NUMERIC сходство (см. правила сходства ).

Чтобы встроенные функции Sqlite могли их понимать, дата и время могут храниться .в виде чисел или текста ;числа - это либо количество секунд с эпохи Unix, либо юлианский день.Текстовые строки могут быть одного из нескольких форматов;см. список в документация .Все они имеют дополнительное преимущество, заключающееся в том, что по сравнению с другими временными метками в том же формате они могут быть правильно отсортированы.

Вы, похоже, используете текстовые строки, такие как '01/10/2018 04:00:00 PM'.Это не тот формат, который понимают функции даты и времени в sqlite, и он не сортируется естественным образом, поэтому его нельзя использовать в сравнениях, кроме проверки равенства.Плюс это неоднозначно: 1 октября или 10 января?В зависимости от того, откуда вы, у вас будет другая интерпретация.

Если вы измените свой формат метки времени на более подходящий, например (Предположим, 1 октября) '2018-10-01 16:00:00', вы сможете сортироватьи сравнивать диапазоны, и использовать его с функциями sqlite.

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