将特定字符串格式转换为Sql server 2012 datetime

时间:2016-04-27 08:54:55

标签: sql sql-server sql-server-2012

我从Java输出中获取日期为字符串: Wed Apr 27 09:56:56 CEST 2016

我想在调试期间手动避免在我的表中的datetime字段中键入“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),它可以解析格式,但它无法解析我注意到的这种字符串。< / p>

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

3 个答案:

答案 0 :(得分:3)

请尝试以下查询:

 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)

答案 1 :(得分:3)

 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)

答案 2 :(得分:2)

如果格式已修复,则此查询应该有效

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