我的列 varchar ,如“022008”,我需要将其转换为日期时间,如“02/01/2008”。这将在转换过程的数百万条记录上运行。这样做的有效选择声明是什么?
答案 0 :(得分:3)
如下:
SET DATEFORMAT MDY
GO
Select StringValue, Cast(Stuff(StringValue, 3, 0, '-01-') As datetime)
From Table...
我本地计算机上的一百万行,在10秒内返回。
答案 1 :(得分:0)
看看这里:
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
答案 2 :(得分:0)
效率不高,但是我第一次捅了它:
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