将特定的字符串格式转换为 SQL 服务器 2012年日期时间



我从 Java 输出中获取字符串的日期为: 周三 4 月 27 日 09:56:56 CEST 2016

我想在调试期间手动避免在表中的日期时间字段中键入"2016-04-2..etc",并避免创建手动方法来格式化该日期。

相反,我想在数据库上即时执行此操作。我想将给定的字符串格式转换为日期。我尝试了很多例子,但我无法解决它。我发现最接近的是:

select convert(datetime, 'Wed Apr 27 09:56:56 CEST 2016', 127) from mytable

我在SQL Server 2012中需要这个。似乎由于文档(https://msdn.microsoft.com/en-us/library/ms187928.aspx),它可以解析可能格式,但它无法解析我注意到的这种字符串。

有人知道如何将此给定字符串转换为日期吗?

 select convert(datetime, REPLACE((SUBSTRING('Wed Apr 27 09:56:56 CEST 2016', PATINDEX('%CEST%', 'Wed Apr 27 09:56:56 CEST 2016')+5, 4)
 + ' ' + SUBSTRING('Wed Apr 27 09:56:56 CEST 2016', 5, (PATINDEX('%CEST%', 'Wed Apr 27 09:56:56 CEST 2016')-5))),'CEST',''), 109)

请尝试以下查询:

 select cast(substring(replace ('Wed Apr 27 09:56:56 CEST 2016','CEST','') ,4,len(replace ('Wed Apr 27 09:56:56 CEST 2016','CEST',''))) as datetime)

如果格式是固定的,则此查询应该有效

SELECT CONVERT(DATETIME,REPLACE(SUBSTRING('Wed Apr 27 09:56:56 CEST 2016',4, LEN('Wed Apr 27 09:56:56 CEST 2016')-3),'CEST','')) from mytable

最新更新