SQL Server:日期转换问题?

时间:2011-05-20 18:16:54

标签: sql sql-server tsql sql-server-2008

我有一个列,其日期值存储在varchar(格式ddmmyy)中,就像这样

231280
121280
131185
...

如何将这些值转换为日期时间数据类型?

4 个答案:

答案 0 :(得分:1)

由于此格式不标准,请使用

DECLARE @field char(6)
SET @field = '231280'
select convert(datetime, right(@field, 2) +   substring(@field, 3, 2) + left(@field, 2)  , 12)

答案 1 :(得分:1)

使用子字符串来获取年,月和日,如果年份大于11,如果不添加20则添加19,以获得2009年格式的年份,但这是您的查询而不是字符串添加您的列名

 select CAST(
            CASE WHEN CAST(SUBSTRING('231280', 5, 2) AS INT) >11
                    THEN '19'+SUBSTRING('231280', 5, 2) 
                    else '20'+SUBSTRING('231280', 5, 2) 
                END 
        +'-'+SUBSTRING('231280', 3, 2)+'-'+SUBSTRING('231280', 1, 2) as datetime)

答案 2 :(得分:1)

您必须使用一些子字符串步法将字符串转换为已知的date format。这是将字符串转换为格式3“英国/法国”的示例:

declare @YourTable table (YourColumn varchar(50))
insert @YourTable
          select '231280'
union all select '121280'
union all select '131185'

select  convert(datetime, substring(YourColumn,1,2) + '/' + 
    substring(YourColumn,3,2) + '/' + substring(YourColumn,5,2), 3)
from    @YourTable

答案 3 :(得分:1)

Set DateFormat DMY
GO
Select Cast(Stuff(Stuff(SomeValue, 3, 0, '-'), 6, 0, '-') As datetime)
From MyData