我在這裏遇到了這個錯誤,並嘗試更改數據類型並使用了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