在SQL Server中比较日期
如何检查2个日期在SQL脚本中是否相等?在SQL Server中比较日期
从前端传递的值是“2010-12-04二十二点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函数导致了 溢出。分隔两个日期/时间实例的日期部分 的数量是 太大。尝试使用datediff与 不太精确的日期部分。
在我的SQL Server(2008 R2)这个片段的T-SQL代码的工作就好了....
你确定你没有在你的日期引入一个错字(如1010-12-04......
)不知何故,这样两个日期之间的距离真的会很大?
那么它们之间的秒数的确可以溢连SQL Server的大数字范围 - 而这正是该错误信息是说...
谢谢你有一个错字。有一个机会,用户将尝试搜索更长的差距的日期。在那种情况下,我该如何防止这个错误? – dotnetrocks 2010-12-05 20:57:38
@Dotnetrocks:也许你应该检查DATEDIFF与例如第一天 - 如果差价不到一天,那么你可以检查SECONDS。或者只是赶上例外情况 - 如果发生这种情况,日期显然会相差很远。 – 2010-12-05 21:10:07
你是在对一个datetime
列WHERE
条款使用呢?
如果因此就使用
DECLARE @d DATETIME = '2010-12-04 22:14:49.000'
SELECT ....
WHERE YourCol >= @d AND YourCol < DATEADD(SECOND,1,@d)
这将是更优化搜索和高效的反正。
这从日期删除秒
where convert (varchar(10), @date1, 108) + ' ' + CONVERT(varchar(5), @date1, 108) = convert (varchar(10), @date2, 108) + ' ' + CONVERT(varchar(5), @date2, 108)
角色每个像下面的示例中的日期时间值的:
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进行其他类型的转换。
我不明白你的样本。 – 2010-12-05 20:47:58