簡體   English   中英

在SQL SERVER中將VARCHAR轉換為DATE

[英]Convert VARCHAR to DATE in SQL SERVER

我的表中有VARCHAR列(MyValue)。 它具有兩種不同格式的日期值。

MyValue
----------
25-10-2016
2016-10-13

我想以DATE格式顯示它們。

我寫了如下查詢:

SELECT CONVERT(date, MyValue, 105) FROM MyTable
SELECT CAST(MyValue as date) FROM MyTable

兩者都給我這個錯誤。 Conversion failed when converting date and/or time from character string.

無論如何,是否有轉換為DATE數據類型格式的信息,甚至還有以上述不同格式存儲的值?

期待您的回答。 提前致謝。

您可以使用TRY_CONVERTCOALESCE 如果轉換失敗,則TRY_CONVERT返回NULL, COALESCE返回第一個NOT NULL值:

SELECT  COALESCE(TRY_CONVERT(DATETIME, x, 105), TRY_CONVERT(DATETIME, x, 120))
FROM    (VALUES('25-10-2016'), ('2016-10-13')) a(x)

我假設值2016-10-13的格式為yyyy-MM-dd

您在評論中提到您可能還有其他格式。 在這種情況下,它變得非常棘手。 如果您獲得的值是01-12-2017並且不知道格式,則無法分辨這是1月還是12月。

這有幫助嗎?

declare @varchardates table
(
vcdate varchar(20)
)

INSERT INTO @varchardates VALUES
('25-10-2016'),
('2016-10-13')

SELECT CONVERT(date,vcdate, case when SUBSTRING(vcdate, 3, 1) = '-' 
THEN 105 ELSE 126 END) as mydate 
FROM @varchardates  

根據數據中有多少種不同的格式,您可能需要擴展case語句!

請參閱此處以獲取不同格式編號的列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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