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.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号