簡體   English   中英

在插入日期時間SQL時從字符串轉換日期和/或時間時轉換失敗

[英]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以來的天數(其中11900-01-01 ,因此先減去1)

您可以像這樣轉換它:

SELECT
    CONVERT( date, DATEADD( day, SS.OrderDate - 1, '1900-01-01' ) ) AS OrderDate

另一個選擇是使用floatdatetime的隱式轉換。 注意減號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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM