我有varchar值的列像「022008」,我需要轉換爲datetime像「02/01/2008」。這將在轉換過程中運行數百萬條記錄。什麼是有效的選擇陳述?什麼是將月份和年份字符串轉換爲日期的有效方法?
回答
如何像:
SET DATEFORMAT MDY
GO
Select StringValue, Cast(Stuff(StringValue, 3, 0, '-01-') As datetime)
From Table...
在我的本地機器上有一百萬行,那在10秒內返回。
+1:正確,很好地使用STUFF(支持SQL Server 2005+)命令:http://msdn.microsoft.com/en-us/library/ms188043%28SQL.90%29.aspx – 2010-03-25 05:02:29
Stuff在SQL Server 2000也是如此。 – 2010-09-20 12:30:05
看一看這裏:
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format
的STR_TO_DATE功能不只是這聽起來像它會做的事:它接受一個字符串,並把它變成一個標準的日期對象。要將其轉換爲MM/DD/YYY格式,請使用DATE_FORMAT。這是做到這一點的最簡單的方法,並且可能是最有效的。
對於你的榜樣,你可以將其轉換像這樣:
SELECT DATE_FORMAT(STR_TO_DATE('022008', '%m%Y'), '%m/%d/%Y');
-> 02/00/2008
你必須做一些額外的廢話來獲得一天改爲「01」,那麼也許你可以打掃一下你一次得到結果;否則,查詢變得更加複雜。
希望這會有所幫助。它
-tjw
但似乎我們正在尋找MS Transact-SQL。 「高效」這個詞使得這個問題變得困難...... – LesterDove 2010-03-24 22:29:07
+1乾淨簡單,你只是忘了另一個0 :) – medopal 2010-03-24 22:30:38
這對MySQL而不是SQL Server有效。 – 2010-03-25 05:04:09
未產生大的效率,但我的第一個刺:
declare @s as char(6)
set @s = '031977'
select dateadd(month, cast(substring(@s, 1, 2) as int) - 1, dateadd(year, substring(@s, 3, 4) - 1900, 0))
輸出:
1977-03-01 00:00:00.000
- 1. 將字符串轉換爲日期時間爲年份和月份SQL
- 2. 月份和年份的日期轉換
- 3. 無法將月份年份字符串轉換爲R中的日期
- 4. 如何在xts中將數字年份月份轉換爲年份 - 月份 - 日期日期格式?
- 5. 將年份和月份(「yyyy-mm」格式)轉換爲日期?
- 6. 將月份和年份轉換爲日期
- 7. 在Android中將日期轉換爲月份和年份
- 8. 轉換日期時間爲nvarchar,只是年份和月份
- 9. 月份和年份的有效期限
- 10. 轉換或提取年份,月份和日期從字符串在PHP
- 11. 將年份日月轉換爲月份日
- 12. 如何將月份轉換爲java中的年份和月份
- 13. JavaScript:獲取日期差異並將月份轉換爲年份
- 14. 從TextBox讀取日期值並轉換爲月份和年份
- 15. 從日期字符串中檢索年份和月份
- 16. 匹配日期,月份和年份字符串
- 17. PHP:將年中的日期轉換爲月份和月中的日期
- 18. 將日期分解爲2個整數,月份和年份,按日期過濾的最佳方法是什麼?
- 19. 字符串到日期時間的轉換 - 指定在日期和月份日期的年份
- 20. 將年份字符串即'2005'轉換爲日期時間值
- 21. 將月份字符串轉換爲日期
- 22. 字符串轉換爲日期[隨着年份和季度]
- 23. 按日期和/或月份和/或年份檢索記錄的最有效方法是什麼?
- 24. 爲什麼日期時間轉換爲字符串得到我的錯誤:ORA-01843:不是有效的月份
- 25. Flex 4將日期的月份值轉換爲其字符串等效項
- 26. 計算月份和年份的日期
- 27. 如何將這種日期轉換爲月份日年格式?
- 28. 在30天內獲取行,當年是當前年份,月份是當前月份,日期是字符串
- 29. 轉換日期到月份名稱和年份
- 30. 從轉換爲字符串的日期抓取月份
你的字符串總是以「%mm%yyyy」的形式出現嗎? – galford13x 2010-03-24 22:18:10
是的,它總是6個字符,月份第一次,然後是年份。 – adam0101 2010-03-24 22:19:44