在T-SQL中将日期以文本格式转换为日期时间格式

时间:2010-05-10 18:47:11

标签: sql-server tsql datetime date-parsing

我有一个客户端提供的文件,它被加载到我们的SQL Server数据库中。此文件包含基于文本的日期值,即(05102010),我需要从db列读取它们并将它们转换为正常日期时间值='2010-05-10 00:00:00.000'作为清理的一部分处理。

非常感谢任何指导。

3 个答案:

答案 0 :(得分:4)

使用

的一种方式
CONVERT(datetime,RIGHT(Column,4) + left(Column,4))

例如

declare @s char(8)
select  @s = '05102010'
select CONVERT(datetime,RIGHT(@s,4) + left(@s,4))

答案 1 :(得分:0)

尝试:

SELECT 
    CONVERT(datetime,  RIGHT(YourColumn,4)
                       +LEFT(YourColumn,4)
           ) AS ProperDateTime
    FROM...

工作示例:

DECLARE @YourTable table (StringDate char(8))
INSERT @YourTable VALUES ('05102010')
INSERT @YourTable VALUES ('03182010')

SELECT 
    CONVERT(datetime,  RIGHT(StringDate,4)
                       +LEFT(StringDate,4)
           ) AS ProperDateTime
    FROM @YourTable

输出:

ProperDateTime
-----------------------
2010-05-10 00:00:00.000
2010-03-18 00:00:00.000

(2 row(s) affected)

答案 2 :(得分:0)

又快又脏:

SELECT
    CONVERT(DATETIME,
        SUBSTRING(col, 1, 2)
        + '/' + SUBSTRING(col, 3, 2)
        + '/' + SUBSTRING(col, 5, 4))