Level1 Level2 createdate CCcreatedate datedifference
23 | 3 | 10/24/2014 17:07 | 10/24/2014 17:07
24 | 3 | 10/24/2014 23:48 | 10/25/2014 17:07
25 | 3 | 10/25/2014 9:57 | 10/26/2014 17:07
26 | 1 | 10/26/2014 17:49 | 10/27/2014 17:07
27 | 1 | 10/16/2014 12:53 | 10/28/2014 17:07
28 | 1 | 10/16/2014 12:32 | 10/29/2014 17:07
29 | 2 | 10/16/2014 13:58 | 10/30/2014 17:07
30 | 2 | 10/16/2014 16:40 | 10/31/2014 17:07
31 | 2 | 10/16/2014 20:28 | 11/1/2014 17:07
32 | 2 | 10/15/2014 17:09 | 11/2/2014 17:07
我有一个包含5列的表,其中2列是日期。一个声明为nvarchar
(createdate
),另一个声明为datetime
(CCcreatedate
)
我试图在第3列(datedifference
)上显示2个日期之间的差异,这也是nvarchar
。收到错误说明
将表达式转换为数据类型nvarchar的算术溢出错误。
当我使用下面的查询时。
update table
set datedifference =
datediff(minute,CONVERT(nvarchar,CAST([createdate] as datetime)),CONVERT(nvarchar,CAST([CE_activity_create_Date]as datetime)))
我正在尝试找出两个日期之间的差异,以便我可以稍后获得具有最小日期差异的不同(级别2)
答案 0 :(得分:2)
您可能需要更大的日期差异列。我在运行以下代码时遇到了同样的错误:
declare @T nvarchar(3)
Select @T = DateDiff(minute, '10/15/2014 17:09','11/2/2014 17:07')
差异,以分钟为单位为25,918。如果nvarchar列太小,则会出现错误。我建议您将日期差异列的数据类型更改为int而不是nvarchar。
您可以使用此代码查看大小(或小)或列的大小:
Select max_length
from sys.columns
where name = 'datedifference'
and object_id = object_id('YourTableNameHere')
答案 1 :(得分:0)
我认为更新查询应该是:
update table
set datedifference =
datediff(minute,CONVERT(datetime,[createdate] ),CONVERT(datetime,[CE_activity_create_Date]))
请注意,相隔超过十周的日期需要6位数来存储 整数部分。如果可能的话,将结果存储为数字列会更好 。