【发布时间】:2022-09-25 17:36:17
【问题描述】:
我收到此错误:
消息 535,第 16 级,状态 0,第 2 行
datediff 函数导致溢出。分隔两个日期/时间实例的日期部分的数量太大。尝试将 datediff 与不太精确的日期部分一起使用。我正在使用 SQL Server 2008。我没有使用
datediff函数,但我在上面遇到了溢出错误。下面的查询适用于我的一个具有相同结构的数据库,但它不适用于不同服务器上的该数据库。我是否必须更改一些数据库设置才能使此查询正常工作?SELECT [EventStamp] ,[AlarmState] ,[TagName] ,[Description] ,[Area] ,[Type] ,[Value] ,[CheckValue] ,[Priority] ,[Category] ,[Provider] ,[Operator] ,[DomainName] ,[UserFullName] ,[AlarmDuration] ,[User1] ,[User2] ,[User3] ,[EventStampUTC] ,[MilliSec] ,[OperatorNode] FROM [A2ALMDB].[dbo].[v_AlarmEventHistory2] WHERE [EventStamp] >= \'2022-08-25\' AND [EventStamp] <= \'2022-08-26\' ORDER BY [EventStamp] ASC
-
\"table\" [v_AlarmEventHistory2] 实际上可能是一个带有计算字段的视图,其中一个计算字段中的某些内容正在使用 Datediff。这是线索:您的 DBA 使用 v_ 前缀命名对象,这应该提示您认为这是一个计算对象(视图)。
-
猜测一下,DBA 可能使用
DATEDIFF截断了MilliSec值,并使用了一个过去太远的时期,导致溢出。
标签: sql sql-server sql-server-2008