如何使用通配符作为日期?提交日期字段是日期时间,但我尝试的查询返回的内容完全不同。我想要提交日期以 2019-08 开头的记录
这是我尝试过的代码:
select *
from INVPol
where SubmitDate like '[2019-08]%'
">How do my used card for datetme">很简单,你没有。使用正确的日期逻辑。对于您拥有的最佳方法
如下SELECT *
FROM dbo.INCPol
WHERE SubmitDate >= '20190801'
AND SubmitDate < '20190901';
使用大于或等于的下边界和小于的上边界意味着将返回日期在 2019 年 8 月的每一行。这通常被视为"最佳"方式,因为它是最全面的。使用具有时间部分的值时,使用BETWEEN
的逻辑可能会给出不正确的结果。这是因为2019-08-31T00:00:00.0000001
不是BETWEEN '20190801' and '20190831'
(它是结束阈值后的 1/1000000 秒(;这意味着您实际上会损失一天的价值。此外,日期'2019-09-01T00:00:00.0000000'
是BETWEEN '20190801' AND '20190901'
,因此您可能会得到(一些(不需要的行。
尝试在日期上使用通配符意味着您必须将列的值转换为varchar
,这将导致性能问题。将日期保留为日期和时间数据类型,并将其查询为一个数据类型。