比较SQL Server 2008中的转换日期

时间:2014-03-18 05:58:51

标签: sql sql-server-2008

我想比较日期。比较与<>符号一致正常,但当我使用=时返回零行。查询如下:

SET DateFormat DMY 
SELECT * FROM [Users]  
where name like '%' + replace('', '%', '[%]') + '%'
and email like '%' + replace('', '%', '[%]') + '%' 
and last_edited = CAST('18/3/2014' AS DATETIME) 
ORDER BY CONVERT(DateTime, Last_edited,101)  desc

"="案例中的这个查询出了什么问题?`

2 个答案:

答案 0 :(得分:1)

更改您的where子句以删除时间部分:

DATEADD(dd, DATEDIFF(dd, 0, [last_edited]), 0) = CAST('18/3/2014' AS DATETIME) 

根据列名称,我假设[last_edited]的值为2014-03-18 17:50:08.000,因此如果您想与18/3/2014进行精确比较,则需要删除时间。

答案 1 :(得分:1)

试试这个

SET DateFormat DMY 
SELECT * FROM [Users]  
where name like '%' + replace('', '%', '[%]') + '%'
and email like '%' + replace('', '%', '[%]') + '%' 
and convert(varchar(25),last_edited,  101) = '03/18/2014'
ORDER BY CONVERT(DateTime, Last_edited,101)  desc