我有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. 将年份和月份(“yyyy-mm”格式)转换为日期?
- 5. 转换日期时间为nvarchar,只是年份和月份
- 6. 月份和年份的有效期限
- 7. 转换或提取年份,月份和日期从字符串在PHP
- 8. 将年份日月转换为月份日
- 9. 如何将月份转换为java中的年份和月份
- 10. 匹配日期,月份和年份字符串
- 11. 字符串到日期时间的转换 - 指定在日期和月份日期的年份
- 12. 将日期分解为2个整数,月份和年份,按日期过滤的最佳方法是什么?
- 13. 字符串转换为日期[随着年份和季度]
- 14. 按日期和/或月份和/或年份检索记录的最有效方法是什么?
- 15. 为什么日期时间转换为字符串得到我的错误:ORA-01843:不是有效的月份
- 16. Flex 4将日期的月份值转换为其字符串等效项
- 17. 计算月份和年份的日期
- 18. 转换日期到月份名称和年份
- 19. 在30天内获取行,当年是当前年份,月份是当前月份,日期是字符串
- 20. 日期格式为UTC月份日期和年份(MMM DD,YYYY)
- 21. 什么是排序日期,星期和月份列表的最有效方式?
- 22. Excel公式或VBA将年份,月份数据转换为实际日期
- 23. 的Objective-C:日期字符串转换成周+月份名称
- 24. LINQ如何按日期分组日期和月份和年份
- 25. 为什么编译器要求同时加入的日期,月份和年份?
- 26. 转换一个月名在日期月份数,两位数日期和月份
- 27. 将字符串转换为日期(0512应转换为2012年5月)
- 28. 转换日期格式(只有年份)
- 29. SQLite的字符串转换为日期时的日期列有单数月份和日子
- 30. mysql:按年份和月份(无日期)如何做日期
你的字符串总是以“%mm%yyyy”的形式出现吗? – galford13x 2010-03-24 22:18:10
是的,它总是6个字符,月份第一次,然后是年份。 – adam0101 2010-03-24 22:19:44