bal*_*569 6 sql t-sql sql-server-2008
我已经使用日期和时间验证来安排报告......我必须安排该报告仅用于未来的日期和时间而不是之前的日期和时间..我已经使用过这个
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 too large. Try to use datediff with a less precise datepart.
Run Code Online (Sandbox Code Playgroud)
不完全回答您的问题,但也许是您问题的解决方案。您不需要使用 DATEDIFF 并检查结果,您只需比较两个日期即可。
IF ( @schedule_date <= GETDATE() )
BEGIN
RAISERROR('Schedule date should not be earlier than system date', 16, 1)
RETURN
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2377 次 |
| 最近记录: |