比较SQL Server中的日期

时间:2010-12-05 20:43:33

标签: sql-server-2008

如何在sql脚本中检查2个日期是否相等?

前端传递的价值是'2010-12-04 22:14:49',表格中的日期是'2010-12-04 22:14:49.253'

我不在乎millisec。我试过这个

DATEDIFF(SS,'2010-12-04 22:14:49','2010-12-04 22:14:49.253') = 0

并收到以下错误

  

日期函数导致了一个   溢出。日期部分的数量   分隔两个日期/时间实例是   太大了。尝试使用datediff   不太精确的日期部分。

4 个答案:

答案 0 :(得分:2)

在我的SQL Server(2008 R2)上,这段T-SQL代码工作得很好....

你确定你没有在你的日期以某种方式引入拼写错误(例如1010-12-04......),这样两个日期之间的距离真的很大吗?

然后它们之间的秒数确实会溢出甚至SQL Server的大数值范围 - 而这正是错误消息所说的......

答案 1 :(得分:2)

您是否在针对WHERE列的datetime子句中使用此内容?

若是,请使用

DECLARE @d DATETIME = '2010-12-04 22:14:49.000'

SELECT ....
WHERE YourCol >= @d AND YourCol < DATEADD(SECOND,1,@d)

无论如何,这将更加可靠和高效。

答案 2 :(得分:0)

这将删除日期

中的秒数
where convert (varchar(10), @date1, 108) + ' ' + CONVERT(varchar(5), @date1, 108) = convert (varchar(10), @date2, 108) + ' ' + CONVERT(varchar(5), @date2, 108)

答案 3 :(得分:0)

投射每个日期时间值,如下例所示:

declare @stuff as datetime
set @stuff = getdate()
select @stuff
SELECT CONVERT(VARCHAR(26), @stuff, 120)

输出=

2010-12-05 16:17:49.720

2010-12-05 16:17:49

转换为类型120不包括毫秒。

关注此LINK进行其他类型的转化。