我在这里遇到了这个错误,并尝试更改数据类型并使用了Convert,但似乎没有任何东西解决这个问题。所以我想在这里寻求帮助。我会尽量给予尽可能多的信息,但随时问问它是否不够。Msg 242:将varchar数据类型转换为日期时间数据类型导致超出范围值
这是我收到的错误:
Insert into prompt(ID, Date)
select
ROW_NUMBER() over (order by b.IDLoc),
[dbo].[fn_GetGPtime](cast (replace(DateCollected, '/', '-') + ' ' + a.UTCTime as datetime))
from
Img a
inner join
Tloc b on a.Filename = b.filename
order by
b.IDLoc
在提示表中的列Date
有float
数据类型。 UTCTime
和DateCollected
都是varchar(20)
的错误是:
Msg 242, Level 16, State 3, Line 274
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
下面是函数:
[dbo].[fn_GetGPtime] (@UTCtime datetime)
returns varchar(50)
AS
BEGIN
return (DATEPART (WEEKDAY, @UTCtime) - 1) * 86400 ---day
+ DATEPART (HOUR, @UTCtime) * 3600 ---hour
+ DATEPART (MINUTE, @UTCtime) * 60 ----minutes
+ DATEPART (SECOND, @UTCtime) ---second
+ (DATEPART (MILLISECOND, @UTCtime)) * 0.001 ---ms
+ (DATEPART (MICROSECOND, @UTCtime)) * 0.000001 ---us
+ 16 ----leap seconds
end;
来获取数据本身的想法:
我如何解决这个问题?
什么是MIN()'收集日期?任何空白或“NULL”日期? –
@AaronDeitz datecollected的最小值是07/17/2017。无空日期或'' – SQLserving
@marc_s我同意你和Rominus关于数据类型的良好决定,但不幸的是,有时候你继承了不理想的东西。我无法对数据类型进行更改,因为它具有前端集成。 – SQLserving