我正在使用where
子句提取数据,但数据库中有日期时间戳,我想仅使用日期信息提取数据。
select *
from invoice
where invoice_date = '2019-06-24'
但是我已经将发票日期存入数据库中,发票日期为2019年06月24日04:30:00.000。
我正在使用where
子句提取数据,但数据库中有日期时间戳,我想仅使用日期信息提取数据。
select *
from invoice
where invoice_date = '2019-06-24'
但是我已经将发票日期存入数据库中,发票日期为2019年06月24日04:30:00.000。
select *
from invoice
where CAST(invoice_date as DATE) = '2019-06-24'
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);
有两种方法可以实现你想要的目标。一种是将时间戳转换为日期格式,这样非常易读;另一种是使用时间范围。
select *
from invoice
where invoice_date >= '2019-06-24' and invoice_date < '2019-06-25';
使用时间范围略微不易读懂,但如果您在invoice_date
上建立了索引,则可以使用它,因此查询可能会更快运行。
CAST(... AS date)
和CONVERT(date,..)
是可搜索的(但这并不意味着你应该这样做)。关于这个问题在DBA上有一篇文章,但我在谷歌上找不到。 - undefined