如何在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 不太精确的日期部分。
答案 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进行其他类型的转化。