sql之查询时的日期未在 SQL Server 中返回正确的输出
cmt
阅读:84
2025-01-19 22:14:33
评论:0
我这样跑的时候有个疑问
select emp_name, dt_of_join
from emp_mst
where dt_of_join = '2015-09-14'
我从表中得到一条记录。
但是当我尝试像下面这样动态运行时
SELECT emp_name, Dt_Of_Join
FROM emp_mst
WHERE Dt_Of_Join = DATEADD(month, -6, GETDATE())
它不返回任何记录。为什么???
我正在使用 SQL Server 2008。
请您参考如下方法:
因为 getdate()
返回一个带小时的时间值,这使得时间不相等。使用 CAST AS DATE
像这样截断日期:
SELECT emp_name, Dt_Of_Join
FROM emp_mst
WHERE Dt_Of_Join = cast(DATEADD(month, -6, GETDATE()) AS DATE)
编辑 DATE
是在 SQL Server 2008 中引入的,如果您使用的是旧版本,请尝试以下操作:
SELECT emp_name, Dt_Of_Join
FROM emp_mst
WHERE Dt_Of_Join = CAST(FLOOR(CAST(DATEADD(month, -6, GETDATE()) AS FLOAT)) AS DATETIME)
如@zoharpeled 的评论中所述,您可以阅读有关从日期 here. 截断时间值的方法。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。