Bar*_*ens 17 sql-server date-difference sql-server-2012
我有以下查询:
select CONVERT(varchar(12), DATEADD(MILLISECOND, DateDiff(MILLISECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
Run Code Online (Sandbox Code Playgroud)
当我执行此操作时,我收到错误:"datediff函数导致溢出.分隔两个日期/时间实例的日期部分的数量太大.尝试使用具有不太精确的日期部分的datediff."
当我将查询更改为以下时,它工作正常:
select CONVERT(varchar(12), DATEADD(SECOND, DateDiff(SECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
Run Code Online (Sandbox Code Playgroud)
问题是我真的需要MILLISECONDS.
小智 23
稍后回复但可能有所帮助.在SQL 2016 MS中引入了功能DATEDIFF_BIG,它将(根据类型大小)溢出的差异大于290k年.但是,technet文章与DATEDIFF基本相同 - https://msdn.microsoft.com/en-us/library/mt628058.aspx
Mar*_*ont 21
对于毫秒,startdate和enddate之间的最大差异是24天,20小时,31分钟和23.647秒.请参阅http://msdn.microsoft.com/en-us/library/ms189794.aspx
如果你需要毫秒以上的水平,你需要写一些自定义的东西.
您不需要在计算中参考毫秒。
除了溢出之外,这将与您的脚本完全相同:
SELECT CONVERT(varchar(12),
CAST('2014-11-04 08:21:17.723' as datetime) -
CAST('2014-08-04 10:37:28.713' as datetime)
, 114)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37489 次 |
| 最近记录: |