相关疑难解决方法(0)

SQL Server:datediff函数在使用MILLISECOND时导致溢出

我有以下查询:

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.

sql-server date-difference sql-server-2012

17
推荐指数
4
解决办法
4万
查看次数

sql中的日期时间比较错误?

我已经使用日期和时间验证来安排报告......我必须安排该报告仅用于未来的日期和时间而不是之前的日期和时间..我已经使用过这个

    declare @Dt varchar(50) 
    declare @Hr varchar(50)
    declare @trandate_time_tmp as TIME(0)

    select @trandate_time_tmp = getdate()
    set @Dt = DATEDIFF (D,@schedule_date ,@trandate_tmp )
    set @Hr = DATEDIFF (S,@schedule_date ,@trandate_time_tmp )

    if ( @Dt > 0)
    begin
        raiserror('Schedule Date should not be earlier than system date',16,1)
        return
    end

    if ( @Hr > 0) 
    begin
        raiserror('Schedule Time should not be earlier than system time',16,1)
        return
    end
Run Code Online (Sandbox Code Playgroud)

对于日期部分,它正在检查正确,但是对于时间它会抛出错误

The datediff function resulted in an overflow. The number of dateparts separating two date/time instances is …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2008

6
推荐指数
1
解决办法
2377
查看次数