![](/img/trans.png)
[英]Using T-SQL, how to convert date format mmm-dd-yyyy to yyyy-mm-dd
[英]T-SQL convert string from ddmmyyyy to dd MMM yyyy
我有字符串 20120821
,我還需要將其轉換為21 AUG 2012
字符串 。 什么是簡單的方法?
您可以在此處找到大量不同的輸出。
但要回答您的問題:
DECLARE @date VARCHAR(8) = '20120821';
SELECT CONVERT(VARCHAR(11), CONVERT(DATE, @date), 113);
declare @t varchar(50) = '20120821'
select convert(varchar(50),convert(date,@t),113)
您可以使用datefromparts()
轉換為日期:
select datefromparts(right(ddmmyyyy, 4), substring(ddmmyyyy, 3, 2), left(ddmmyyyy, 2))
然后,您可以將其轉換為字符串:
select convert(varchar(255), datefromparts(right(ddmmyyyy, 4), substring(ddmmyyyy, 3, 2), left(ddmmyyyy, 2)), 106)
使用cast
convert
並像這樣convert
:
select convert(varchar, cast('20120821' as datetime), 6)
要么
select convert(varchar, cast('20120821' as datetime), 113)
艱難的問題已經有了四個答案-現有的答案都不過是代碼轉儲而已-所以我想我會添加一些解釋。
日期的字符串表示形式被認為是臭名昭著的,因為它們中的許多內容含糊不清-例如, 02/04/2019
2019可以解釋為2019年2月4日或2019年4月2日 。
當您輸入兩位數的年份時,情況會變得更糟01/02/03
可以代表許多不同的日期-包括不同的世紀!
幸運的是,您的源字符串采用兩種格式之一,保證在轉換為Date
( 但不轉換為DateTime
! )時,SQL Server始終可以正確解釋它們:
yyyymmdd
是一個,而yyyy-mm-dd
是另一個。
這兩種格式均為國際標准,並在ISO 8601中進行了描述。
但是請注意, DateTime
數據類型中存在一個已知的錯誤(功能?) ,該錯誤使yyyy-mm-dd
格式區域性相關。 新的和改進的替代數據類型DateTime2
中不存在此錯誤。
我不會在此答案中添加代碼,因為它只會重復Jim Jimson的答案或apomene的答案中的代碼 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.