Sql server 2008 比较SQL Server中的日期
如何检查sql脚本中的两个日期是否相等 从前端传递的值为“2010-12-04 22:14:49”,表中的日期为“2010-12-04 22:14:49.253” 我不在乎毫秒。我试过这个Sql server 2008 比较SQL Server中的日期,sql-server-2008,Sql Server 2008,如何检查sql脚本中的两个日期是否相等 从前端传递的值为“2010-12-04 22:14:49”,表中的日期为“2010-12-04 22:14:49.253” 我不在乎毫秒。我试过这个 DATEDIFF(SS,'2010-12-04 22:14:49','2010-12-04 22:14:49.253') = 0 并得到以下错误 datediff函数导致 溢流日期部分的数量 将两个日期/时间实例分开是非常困难的 太大了。尝试将datediff与 不太精确的日期部分 在我的SQL Serve
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的大数值范围-这正是错误消息所说的…在我的SQL Server(2008 R2)上,这段T-SQL代码工作得很好
你确定你的约会中没有出现打字错误(例如,1010-12-04……
),因此两个日期之间的距离会非常大吗
然后,它们之间的秒数甚至可能溢出SQL Server的大数值范围-这正是错误消息所说的…您是否在
WHERE
子句中对datetime
列使用此值
如果是这样,就用
DECLARE @d DATETIME = '2010-12-04 22:14:49.000'
SELECT ....
WHERE YourCol >= @d AND YourCol < DATEADD(SECOND,1,@d)
DECLARE@d DATETIME='2010-12-0422:14:49.000'
选择。。。。
其中YourCol>=@d和YourCol
无论如何,这将更具吸引力和效率。您是否在
WHERE
子句中对datetime
列使用此选项
如果是这样,就用
DECLARE @d DATETIME = '2010-12-04 22:14:49.000'
SELECT ....
WHERE YourCol >= @d AND YourCol < DATEADD(SECOND,1,@d)
DECLARE@d DATETIME='2010-12-0422:14:49.000'
选择。。。。
其中YourCol>=@d和YourCol
无论如何,这将更加方便和高效。这将从日期中删除秒数
where convert (varchar(10), @date1, 108) + ' ' + CONVERT(varchar(5), @date1, 108) = convert (varchar(10), @date2, 108) + ' ' + CONVERT(varchar(5), @date2, 108)
这将从日期中删除秒数
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
及
到类型120的转换不包括毫秒
对于其他类型的转换,请遵循此操作。强制转换每个日期时间值,如下例所示:
declare @stuff as datetime
set @stuff = getdate()
select @stuff
SELECT CONVERT(VARCHAR(26), @stuff, 120)
输出=
2010-12-05 16:17:49.720
及
到类型120的转换不包括毫秒
对于其他类型的转换,请遵循此操作。我没有发现您的示例中有此错误。我没有发现您的示例中有此错误。感谢您的输入有误。用户可能会尝试搜索间隔较长的日期。在这种情况下,我如何防止此错误?@Dotnetrocks:也许您应该使用DAY first来检查DATEDIFF,例如,如果差值小于一天,则可以使用秒来检查。或者只是捕捉例外情况——如果发生这种情况,日期显然相距较远。感谢输入错误。用户可能会尝试搜索间隔较长的日期。在这种情况下,我如何防止此错误?@Dotnetrocks:也许您应该使用DAY first来检查DATEDIFF,例如,如果差值小于一天,则可以使用秒来检查。或者只是捕捉异常——如果发生,日期显然有点不同。有没有办法从日期中删除秒数。然后我就可以做一对一的比较了。如果对列应用函数以删除秒数,则可以保证不能使用索引来满足此查询,并且将扫描整个表。我写的查询可以通过范围搜索来满足。@dotnetrocks您可以使用SET@d=DATEADD(MS,-DATEPART(MS,@d),@d)从参数中删除毫秒。是否有办法从日期中删除秒数。然后我就可以做一对一的比较了。如果对列应用函数以删除秒数,则可以保证不能使用索引来满足此查询,并且将扫描整个表。我写的查询可以满足范围搜索。@dotnetrocks您可以使用SET@d=DATEADD(MS,-DATEPART(MS,@d),@d)从参数中删除毫秒