如何比较SQL Server中的日期时间类型

时间:2010-06-23 19:54:04

标签: sql-server datetime

所以我在SQL Server上的数据库中有一个日期时间列。我想做这个简单的select语句:

SELECT *
FROM Res
Where dateSubmit='6/17/2010 5:01:26 PM'

dateSubmit是日期时间数据类型,我的数据库有一行,其中dateSubmit是6/17/2010 5:01:26 PM

但是,当我执行此语句时,它返回null。

5 个答案:

答案 0 :(得分:7)

我认为SQL Server保留的精度数字比显示的数字更多。

试试这个:

SELECT * 
FROM Res 
Where dateSubmit between '6/17/2010 5:01:26 PM' and '6/17/2010 5:01:27 PM'

答案 1 :(得分:1)

问题是小时:分钟:秒部分,你永远不会得到确切的秒,这就是为什么你会得到null。 尝试使用

SELECT * 
FROM Res
Where DATEDIFF ( day , dateSubmit , '6/17/2010 5:01:26 PM' )=0

有关详细信息,请查看此link

“day”可以替换为其他任何内容,因为“DatePart”请参阅link,例如

SELECT * 
FROM Res
Where DATEDIFF ( minute, dateSubmit , '6/17/2010 5:01:26 PM' )=0

答案 2 :(得分:0)

如果不相关则删除时间

Dateadd(d,datediff(d,0,getdate()),0)

答案 3 :(得分:0)

当我尝试在我的SQL Server(2005)版本中运行类似的东西时,它按预期工作。

尝试取出PM并使用24小时格式:

SELECT * 
FROM Res 
Where dateSubmit='6/17/2010 17:01:26' 

答案 4 :(得分:0)

看起来它应该有效。你可以试试 SELECT * FROM Res其中cast(dateSubmit as nvarchar)='6/17/2010 5:01:26 PM'