Где условие, чтобы фильтровать данные метки времени, используя только дату - PullRequest
0 голосов
/ 01 октября 2019

Я использую предложение where для извлечения данных, но в базу данных у меня есть отметка даты и времени, и я хочу извлечь данные, используя только информацию о дате.

select *
from invoice
where invoice_date = '2019-06-24'

Но я попал в базу данных invoice_date = 2019-06-24 04: 30: 00.000

Ответы [ 3 ]

2 голосов
/ 01 октября 2019

Я бы лично использовал «правильную» логику даты:

SELECT {Column List}
FROM dbo.invoice i
WHERE i.invoice_date >= '2019-06-24'
  AND i.invoice_date < '2019-06-25';

Если вы используете параметр, то вы бы использовали DATEADD:

SELECT {Column List}
FROM dbo.invoice i
WHERE i.invoice_date >= @DateParam
  AND i.invoice_date < DATEADD(DAY, 1, @DateParam);
0 голосов
/ 01 октября 2019

Есть два способа достичь того, что вы хотите. Либо приведите отметку времени к дате, которая очень удобочитаема, либо используйте диапазон времени.

select *
from invoice
where invoice_date >= '2019-06-24' and invoice_date < '2019-06-25';

Работа с диапазоном времени немного менее читаема, но если у вас есть индекс на invoice_date, это может бытьиспользуется, поэтому запрос может выполняться быстрее.

0 голосов
/ 01 октября 2019

В ролях:

select *
from invoice
where CAST(invoice_date as DATE) = '2019-06-24'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...