我收到了一个平面文件,然后解析并将其插入表格中。我的帖子的日期格式为 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
如果它是重复的,我道歉。
答案 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'