将字符串转换为Datetime

时间:2016-09-15 10:23:54

标签: sql sql-server datetime type-conversion datetime-format

我收到了一个平面文件,然后解析并将其插入表格中。我的帖子的日期格式为 yyyyMMddhhmmss

此处, yyyy 为年, MM 为月, dd 为日, ...... 为小时, mm 是分钟, ss 是秒部分

我试图将此转换为DateTime类型,如下所述但不适合我

SELECT CAST(StrDate as DateTime) FROM [dbo].[Mytable]

例如: 列的格式20150121190941格式为Varchar,应该转换为DateTime 2015-01-21 19:09:41.000

如果它是重复的,我道歉。

3 个答案:

答案 0 :(得分:0)

您可以使用选择DATETIMEFROMPARTS(年,月,日,小时,分钟,秒,毫秒)

declare @dt nvarchar(25) = '20150121190941'

select datetimefromparts(left(@dt,4), substring(@dt,5,2), substring(@dt,7,2),substring(@dt,9,2), substring(@dt,11,2), substring(@dt,13,2), '000')

答案 1 :(得分:0)

SQL Server很容易将YYYYMMDD识别为日期。因此,将前8个字符转换为日期很容易。唉,我不认为没有冒号的时间代表。

所以,这是一个相当野蛮的方法:

select (convert(datetime, left(StrDate, 8)) +
        convert(time, substring(StrDate, 9, 2 ) + ':' + substring(StrDate, 11, 2 ) + ':' + substring(StrDate, 13, 2 )
               )
       )

答案 2 :(得分:0)

声明@dt varchar(50) 设置@ dt = 20150121190941

创建表tblDateTbl (     col1 datetime ) 插入到dt(col1) 选择SUBSTRING(@ dt,1,4)+' - '+ SUBSTRING(@ dt,5,2)+' - '+ SUBSTRING(@ dt,7,2)+''+ SUBSTRING(@ dt,9,2 )+':'+ SUBSTRING(@ dt,11,2)+':'+ SUBSTRING(@ dt,13,2)+'。000'