我已經通過建議的日期格式在這裏,但沒有找到任何符合我的要求。如何將日期格式從05-JUN-99轉換爲050599?
我有以下日期格式:
05-JUN-99。 05爲dd,如日,JUN和1999年。
我被要求將其轉換爲mmddyy(兩位數月份,兩位數日期和兩位數字年份)。
任何想法如何做到這一點?
感謝您的幫助
我已經通過建議的日期格式在這裏,但沒有找到任何符合我的要求。如何將日期格式從05-JUN-99轉換爲050599?
我有以下日期格式:
05-JUN-99。 05爲dd,如日,JUN和1999年。
我被要求將其轉換爲mmddyy(兩位數月份,兩位數日期和兩位數字年份)。
任何想法如何做到這一點?
感謝您的幫助
你可以在這裏使用convert
。
select convert(varchar(20),cast('05-JUN-99' as date),10)
--Output: 06-05-99
select replace(convert(varchar(20),cast('05-JUN-99' as date),10),'-','')
--Output: 060599
你真的應該包含varchar的長度,而不是依靠默認長度。 –
@SeanLange, 太棒了! 完美工作。感謝您的及時迴應。 我一直在想它是錯誤的。 – Tairoc
@SeanLange ..謝謝。我修改了查詢以包含長度。 –
我通常只是轉換爲字符串。獲取年份,月份,日期,將它們分別放入一個字符串中並進行協調。
Declare @InputValue Varchar(16) = '05-JUN-99'
set @InputValue = replace(@InputValue,'-','/')
declare @TestDate DateTime
set @TestDate = convert(DateTime,@InputValue)
select @TestDate
select right ('0' + convert(Varchar(2),DATEPART(mm,@TestDate)),2)
+ right ('0' + convert(Varchar(2),DATEPART(dd,@TestDate)),2)
+ right ('0' + convert(Varchar(4),DATEPART(yy,@TestDate)),2)
你的意見不是OP所說的,他們的意見不符合他們的意見。 –
@肖恩你是說我有我的月和日交換? –
不,他說你的輸入字符串不是'05 -JUN-99',OP表示他的數據格式是 – Matt
我的投票使用格式SQL-SERVER 2012 +
SELECT FORMAT(CAST('05-JUN-99' AS DATETIME),'MMddyy')
這意味着沒有嵌套內容替換,沒有多餘的投/轉換等保持它的整潔恕我直言
我同意這很乾淨。只要這不使用表中的列,這應該可以正常工作。 FORMAT的表現令人震驚。對於一種情況或小數據集,它工作正常。:) –
@SeanLange是的我想我沒有使用它在我的大型數據集中,因爲對於我來說,你不會將日期存儲爲日期,然後讓GUI執行格式化。我對性能的懷疑是它實際上是一個clr引用.Nets格式,所以當以這種標量方法應用時,性能會很糟糕。所以我會同意依賴於數據大小和性能需求 – Matt
同意100000%關於根本不屬於數據庫的格式。我有一種感覺,clr程序比內置格式函數更適合性能,但是真正知道的人。 –
爲什麼6月份當月爲05?是錯字還是你正在尋找一些邏輯? –
日期沒有格式。我懷疑你是以某種格式顯示日期的字符串。您需要將字符串轉換爲日期,然後返回到varchar以獲取所需的格式。但要小心。如果您使用無法轉換爲日期的數據執行此操作,則會引發錯誤。 –