Sql server 尝试获取datediff时,将表达式转换为数据类型nvarchar时出现“算术溢出错误”
我有一个5列的表格,其中2列是日期。一个声明为nvarcharcreatedate,另一个声明为datetime CCcreatedate 我试图得到两个日期之间的差异,以显示在第三列datedifference上,这也是nvarchar。获取一个错误声明 将表达式转换为数据类型nvarchar时出现算术溢出错误 当我使用下面的查询时Sql server 尝试获取datediff时,将表达式转换为数据类型nvarchar时出现“算术溢出错误”,sql-server,tsql,math,overflow,datediff,Sql Server,Tsql,Math,Overflow,Datediff,我有一个5列的表格,其中2列是日期。一个声明为nvarcharcreatedate,另一个声明为datetime CCcreatedate 我试图得到两个日期之间的差异,以显示在第三列datedifference上,这也是nvarchar。获取一个错误声明 将表达式转换为数据类型nvarchar时出现算术溢出错误 当我使用下面的查询时 Level1 Level2 createdate CCcreatedate datedifference 23 |
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
我正在尝试查找这两个日期之间的差异,以便以后可以获得具有最小日期差异的不同级别2。我认为更新查询应该是:
update table
set datedifference =
datediff(minute,CONVERT(nvarchar,CAST([createdate] as datetime)),CONVERT(nvarchar,CAST([CE_activity_create_Date]as datetime)))
请注意,相隔10周以上的日期需要6位数字来存储整数部分。如果可能,最好将结果存储为数字列。我认为更新查询应该是:
update table
set datedifference =
datediff(minute,CONVERT(nvarchar,CAST([createdate] as datetime)),CONVERT(nvarchar,CAST([CE_activity_create_Date]as datetime)))
请注意,相隔10周以上的日期需要6位数字来存储整数部分。如果可能,最好将结果存储为数字列。您可能需要将datedifference列变大。我刚刚遇到了与运行以下代码时相同的错误:
update table
set datedifference =
datediff(minute,CONVERT(datetime,[createdate] ),CONVERT(datetime,[CE_activity_create_Date]))
以分钟为单位的差值是25918。如果nvarchar列太小,则会出现错误。我鼓励您将datedifference列的数据类型更改为int而不是nvarchar
您可以使用此代码查看或列的大小:
declare @T nvarchar(3)
Select @T = DateDiff(minute, '10/15/2014 17:09','11/2/2014 17:07')
您可能需要将datedifference列放大。我刚刚遇到了与运行以下代码时相同的错误:
update table
set datedifference =
datediff(minute,CONVERT(datetime,[createdate] ),CONVERT(datetime,[CE_activity_create_Date]))
以分钟为单位的差值是25918。如果nvarchar列太小,则会出现错误。我鼓励您将datedifference列的数据类型更改为int而不是nvarchar
您可以使用此代码查看或列的大小:
declare @T nvarchar(3)
Select @T = DateDiff(minute, '10/15/2014 17:09','11/2/2014 17:07')
varchar列有多大?为什么要使用varchar列来存储数值您应该始终为您使用的任何varchar变量和参数提供长度。数据类型有问题。varchar列有多大?为什么要使用varchar列来存储数值您应该始终为您使用的任何varchar变量和参数提供长度。这是数据类型的问题。