我有以下的查询时:SQL服务器:DATEDIFF函数导致溢出采用多段微差
select CONVERT(varchar(12), DATEADD(MILLISECOND, DateDiff(MILLISECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
当我执行此,我得到的错误: “DateDiff函数导致溢出的数量dateparts分隔两个日期/时间实例太大,尝试使用datediff与不太精确的datepart。“
当我查询更改为以下正常工作:
select CONVERT(varchar(12), DATEADD(SECOND, DateDiff(SECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
的问题是,我真的需要毫秒为好。
DATEDIFF返回一个整数,它不足以保存结果。我能想到的唯一方法就是计算两个日期之间有多少天,然后仅对两个日期的时间部分进行比较,以计算出有多少毫秒的差异,然后将两者相加(将天数乘以一天中的毫秒数)。 – Alan 2014-11-04 08:05:45
备注:您是否在适用某种夏令时的地区工作?因为在很多地方,在您查看期间DST开/关之间存在转换,而SQL Server不会考虑它。所以你可以得到一个精确到毫秒但是整整一个小时的结果。 – 2014-11-04 08:16:32
做了任何答案解决您的问题?如果是这样,请接受 – 2014-11-05 10:43:58