转换或转换varchar行(Mon Jul 18 19:28:36 EDT 2018)To DateTime

时间:2018-04-11 17:06:18

标签: 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和convert语句的方法,但没有任何效果。

非常感谢在这方面的任何帮助。

1 个答案:

答案 0 :(得分:3)

也许是这样的

示例

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