Sql 将varchar行转换或强制转换为日期时间,如(2018年7月18日星期一19:28:36 EDT)
我有一个列varchar类型,日期如下:Sql 将varchar行转换或强制转换为日期时间,如(2018年7月18日星期一19:28:36 EDT),sql,sql-server,tsql,datetime,Sql,Sql Server,Tsql,Datetime,我有一个列varchar类型,日期如下: Fri Mar 3 12:55:17 EST 2017 Thu Jul 27 10:12:07 EDT 2017 Fri Jul 21 12:11:35 EDT 2017 Wed Jan 31 13:15:34 EST 2018 我想返回日期和时间,比如: 03/03/2017 12:55:17 07/27/2017 10:12:07 07/21/2017 12:11:35 01/31/2018 13:15:34 我用substring和conver
Fri Mar 3 12:55:17 EST 2017
Thu Jul 27 10:12:07 EDT 2017
Fri Jul 21 12:11:35 EDT 2017
Wed Jan 31 13:15:34 EST 2018
我想返回日期和时间,比如:
03/03/2017 12:55:17
07/27/2017 10:12:07
07/21/2017 12:11:35
01/31/2018 13:15:34
我用substring和convert语句尝试了几种方法,但都不起作用
在这方面的任何帮助都将不胜感激。也许是这样的 示例
Declare @YourTable table (SomeCol varchar(50))
Insert Into @YourTable values
('Fri Mar 3 12:55:17 EST 2017'),
('Thu Jul 27 10:12:07 EDT 2017'),
('Fri Jul 21 12:11:35 EDT 2017'),
('Wed Jan 31 13:15:34 EST 2018')
Select *
,AsDateTime = try_convert(datetime,substring(SomeCol,4,len(SomeCol)-11)+right(SomeCol,4))
From @YourTable
返回
SomeCol AsDateTime
Fri Mar 3 12:55:17 EST 2017 2017-03-03 12:55:17.000
Thu Jul 27 10:12:07 EDT 2017 2017-07-27 10:12:07.000
Fri Jul 21 12:11:35 EDT 2017 2017-07-21 12:11:35.000
Wed Jan 31 13:15:34 EST 2018 2018-01-31 13:15:34.000
美好的正在工作,有没有可能在没有.000的情况下返回?@JCACERES很乐意提供帮助。datetime数据类型的.000部分。如果要将其作为字符串,可以将表达式包装为format(),例如:format(try_convert(datetime,substring(SomeCol,4,len(SomeCol)-11)+right(SomeCol,4)),'yyyyy-MM-dd HH:MM:ss')非常好!!,非常感谢你。