[英]Conversion failed when converting date and/or time from character string while inserting datetime
[英]Conversion failed when converting date and/or time from character string while inserting datetime SQL
我從excel文件中插入了一些列到SQL表中。
我試圖選擇日期列,但出現“插入日期時間時從字符串轉換日期和/或時間時轉換失敗”
我的查詢是
Select
CONVERT(datetime2, SS.OrderDate) Date_Created
--CAST(SS.OrderDate as datetime2) Date_Created
FROM Table SS (nolock)
這兩條線均失敗。
我的日期列如下所示:
43613
43612
43611
可以將格式轉換為哪個Excel(有人知道嗎?這是什么格式?)
5/28/2019
5/27/2019
5/26/2019
如何在SQL中獲得相同的結果?
簡短的答案是,這適用於大多數日期。
select dateadd(day, 43613, '1899-12-30')
Excel“序列”日期是自1900-01-01
以來的天數(其中1
是1900-01-01
,因此先減去1)
您可以像這樣轉換它:
SELECT
CONVERT( date, DATEADD( day, SS.OrderDate - 1, '1900-01-01' ) ) AS OrderDate
另一個選擇是使用float到datetime的隱式轉換。 注意減號2.0
例
Select AsInt = convert(datetime,43613-2.0)
,WithDecimal = convert(datetime,43613.5-2.0)
退貨
AsInt WithDecimal
2019-05-28 00:00:00.000 2019-05-28 12:00:00.000
現在,如果您的列是varchar,也許像這樣
例
Declare @YourTable Table ([OrderDate] varchar(50))
Insert Into @YourTable Values
('43613'),
('43612'),
('43611')
select AsDateTime = convert(datetime,0+[OrderDate]-2.0)
From @YourTable
退貨
AsDateTime
2019-05-28 00:00:00.000
2019-05-27 00:00:00.000
2019-05-26 00:00:00.000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.