SQLdatediff函数数据转换错误
SQL datediff function data convertion error
我在查询中计算了字段,而它减去了两个日期之间的天数差异。我正在使用 SQL 服务器来执行我的查询。
当我使用以下功能时:
Cast(DATEDIFF(D,ACTUALFINISHDATE,PROJFINISHDATE) as int) AS 'Elasped Days
两个日期字段都是datetime
日期类型(例如2019-02-23 00:00:00.000
)。我已经尝试 Convert()
而不是 Cast()
,但仍然遇到同样的问题。
我收到以下错误:
Msg 242, Level 16, State 3, Line 7 The conversion of a varchar data
type to a datetime data type resulted in an out-of-range value.
转换前是否需要将日期时间转换为varchar
?
ActualFinishDate 或 ProjFinishDate 中的数据一定是错误的。查找不良数据...
Select ActualFinishDate
From YourTable
Where ActualFinishDate > ''
And IsDate(ActualFinishDate) = 0
首先,不需要将结果转换为int。只需使用:
DATEDIFF(DAY, ACTUALFINISHDATE, PROJFINISHDATE)
其次,DATEDIFF()
适用于 datetime
数据类型。所以,有两种可能:
- 您的列并不是真正的
DATETIMEE
,而是字符串。
- 其他原因导致错误。
我猜 (1)。您可以通过以下方式进行测试:
select ACTUALFINISHDATE, PROJFINISHDATE
from t
where try_convert(datetime, coalesce(ACTUALFINISHDATE, getdate())) is null or
try_convert(datetime, coalesce(PROJFINISHDATE, getdate())) is null;
如果列中填充了合法值,这将 return 没有行。
我在查询中计算了字段,而它减去了两个日期之间的天数差异。我正在使用 SQL 服务器来执行我的查询。
当我使用以下功能时:
Cast(DATEDIFF(D,ACTUALFINISHDATE,PROJFINISHDATE) as int) AS 'Elasped Days
两个日期字段都是datetime
日期类型(例如2019-02-23 00:00:00.000
)。我已经尝试 Convert()
而不是 Cast()
,但仍然遇到同样的问题。
我收到以下错误:
Msg 242, Level 16, State 3, Line 7 The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
转换前是否需要将日期时间转换为varchar
?
ActualFinishDate 或 ProjFinishDate 中的数据一定是错误的。查找不良数据...
Select ActualFinishDate
From YourTable
Where ActualFinishDate > ''
And IsDate(ActualFinishDate) = 0
首先,不需要将结果转换为int。只需使用:
DATEDIFF(DAY, ACTUALFINISHDATE, PROJFINISHDATE)
其次,DATEDIFF()
适用于 datetime
数据类型。所以,有两种可能:
- 您的列并不是真正的
DATETIMEE
,而是字符串。 - 其他原因导致错误。
我猜 (1)。您可以通过以下方式进行测试:
select ACTUALFINISHDATE, PROJFINISHDATE
from t
where try_convert(datetime, coalesce(ACTUALFINISHDATE, getdate())) is null or
try_convert(datetime, coalesce(PROJFINISHDATE, getdate())) is null;
如果列中填充了合法值,这将 return 没有行。