Запрос данных между одной и той же датой - PullRequest
1 голос
/ 17 июня 2019

Можно ли сделать что-то подобное?

select * from table where Date BETWEEN '2019-05-29' AND '2019-05-29'

Ответы [ 3 ]

2 голосов
/ 17 июня 2019

Да, но лучший подход:

select t.*
from table t
where t.Date >= date('2019-05-29') AND 
      t.Date < date('2019-05-29') + interval 1 day

Почему это лучше? У него нет функции для имени столбца, поэтому он может использовать индекс для столбца date.

2 голосов
/ 17 июня 2019

Да, это возможно.Если у вас есть часть времени, вы можете использовать функцию DATE, чтобы пропустить ее:

SELECT * FROM table WHERE DATE(Date) BETWEEN '2019-05-29' AND '2019-05-29'
-- it may degrade performance, condition is not SARGable
0 голосов
/ 17 июня 2019

Да, вы можете, если вы хотите запустить его в тестовом окне, не изменяя вручную дату в коде, вы можете установить ее как переменную. Используйте trunc, чтобы избавиться от времени, т.е. не будет 29-05-2019 23:59:00. Если вы хотите, чтобы одна и та же дата в течение периода времени удаляла усечение, а затем вы можете установить часы-минуты-секунды, что сделает ваш запрос более точным

SELECT t.*
FROM table t
WHERE t.date BETWEEN trunc(to_date(:datefrom, 'dd.mm.yyyy hh24:mi:ss')) AND
                     trunc(to_date(:dateto, 'dd.mm.yyyy hh24:mi:ss'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...