如何解决SQL Server:GETDATE 与Between 函数不返回所需的数据
如果日期在 StartDate AND EndDate
之间,我正在尝试在页面上显示横幅
SELECT *
FROM TABLE
WHERE GETDATE() BETWEEN StartDate AND EndDate)
如果我使用 GETDATE()
这也无法获得 ID 3 的记录,它也比较 datetime let 因为我的时间值总是 00:00:00.000
有没有办法我只能使用 GETDATE
进行比较yyy-mm-dd 数据库列的一部分,以便上述查询将显示所有三条记录
ID StartDate EndDate
-------------------------------------------------------
1 2020-12-31 00:00:00.000 2021-03-15 00:00:00.000
2 2020-12-31 00:00:00.000 2021-03-31 00:00:00.000
3 2021-01-01 00:00:00.000 2021-02-28 00:00:00.000
我也使用下面的查询,但它显示了相同的结果集。
SELECT *
FROM TABLE
WHERE (GETDATE() BETWEEN StartDate AND CONVERT(varchar,EndDate,23))
将数据类型更改为仅存储日期部分可以解决问题,但我无法更改数据库
解决方法
如果您想忽略时间,请在 GETDATE()
上执行:
WHERE CONVERT(DATE,GETDATE()) BETWEEN StartDate AND EndDate
或者在 EndDate
中添加一天并使用:
WHERE GETDATE() >= StartDate AND
GETDATE() < DATEADD(DAY,1,EndDate)
,
要保持查询可访问(能够使用索引),请将 GETDATE
转换为您想要的方式,而不是转换列。
WHERE
GETDATE() >= StartDate AND
CAST(CAST(GETDATE() AS date) AS datetime) <= EndDate
,
SELECT *
FROM TABLE
WHERE CAST(GETDATE() AS DATE) BETWEEN StartDate AND EndDate
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。