我继承了一些表,并且某些假定的日期列中具有这种类型的值Fri Aug 19 2016 01:00:00 GMT-0400
。如何将其转换为查询中的mm/dd/yyyy hh:mm
?
我尝试了很多事情,并且不断抱怨
无法从字符串转换为日期时间格式
谢谢!
答案 0 :(得分:0)
听起来您的列不是日期时间,而是字符串。最好将这些列转换为datetime类型。但是您可以通过以下方式实现您的期望:
SELECT CONVERT(varchar, CONVERT(datetime, SUBSTRING(mydatecolumn,5,20)), 101)
+ ' ' +
CONVERT(varchar, CONVERT(datetime, SUBSTRING(mydatecolumn,5,20)), 8)
答案 1 :(得分:0)
以下查询在SQL Server 2012中有效,并且不考虑UTC值
DECLARE @Input varchar(32), @Output VARCHAR(32)
SELECT @Input = 'Fri Aug 19 2016 1:00:00 GMT-400'
SELECT @Output = FORMAT(CONVERT(DATETIME, STUFF(STUFF(@Input, 1, 4, ''), PATINDEX('%[^0-9 :]%', LTRIM(SUBSTRING(STUFF(@Input, 1, 4, ''), PATINDEX('%[^A-Z]%', STUFF(@Input, 1, 4, '')), LEN(STUFF(@Input, 1, 4, ''))))) + PATINDEX('%[^A-Z]%', STUFF(@Input, 1, 4, '')), LEN(STUFF(@Input, 1, 4, '')), '')), 'MM/dd/yyyy HH:mm')
SELECT @Output
答案 2 :(得分:0)
如果“日期”字符串值具有相同的确切格式(即ddd mmm dd yyyy hh:nn:ss),则应执行以下操作:
DECLARE @Dt NVARCHAR(50) = 'Fri Aug 19 2016 01:00:00 GMT-0400'
SELECT
CAST(CONVERT(VARCHAR(20), SUBSTRING(@Dt, CHARINDEX(' ', @Dt) + 1, LEN(@Dt)), 120) AS DATETIME)