简体   繁体   English

SQL Server日期存储为“ 2016年8月19日星期五,格林尼治标准时间-0400”

[英]SQL Server dates stored as “Fri Aug 19 2016 01:00:00 GMT-0400”

I inherited some tables and some of the supposed date columns have this type of value Fri Aug 19 2016 01:00:00 GMT-0400 in them. 我继承了一些表,并且某些假定的日期列中的值类型为Fri Aug 19 2016 01:00:00 GMT-0400 How could I convert it to just mm/dd/yyyy hh:mm in my query? 如何在查询中将其转换为mm/dd/yyyy hh:mm

I tried a lot of things and it keeps complaining 我尝试了很多事情,而且一直抱怨

Cannot convert from string to datetime format 无法从字符串转换为日期时间格式

Thanks in advance! 提前致谢!

It sounds like your columns are not datetimes but strings. 听起来您的列不是日期时间,而是字符串。 It would be better to convert those columns to the datetime type. 最好将这些列转换为datetime类型。 But you can achieve what your looking for with something like this: 但是您可以通过以下方式实现您的期望:

SELECT CONVERT(varchar, CONVERT(datetime, SUBSTRING(mydatecolumn,5,20)), 101) 
       + ' ' + 
       CONVERT(varchar, CONVERT(datetime, SUBSTRING(mydatecolumn,5,20)), 8)

Below query works in SQL Server 2012 and not considering UTC value 下面的查询在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

If the Date string values have the same exact format (ie ddd mmm dd yyyy hh:nn:ss) then the following should work: 如果“日期”字符串值具有相同的确切格式(即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)

SqlFiddle SqlFiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 SQL的滴答声(01/01/1901 00:00:00) - Ticks in sql for 01/01/1901 00:00:00 如何在 SQL Server 中将 NULL 插入 DATETIME coulmn 而不是 1900-01-01 00:00:00.000 - How to insert NULL into the DATETIME coulmn instead 1900-01-01 00:00:00.000 in SQL Server 将GMT 0:00转换为GMT +5:30 sql - convert GMT 0:00 to GMT +5:30 sql 如何在Oracle中将日期格式从&#39;1965-08-01 00:00:00.0&#39;更改为&#39;PDT 2000年8月1日星期二00:00:00&#39; - How to change date format from '1965-08-01 00:00:00.0' to 'Tue Aug 01 00:00:00 PDT 2000' in Oracle 从00:00 GMT到12:00 GMT修改SQL查询中的日期字段 - Modify Date Field in SQL Query from 00:00 GMT to 12:00 GMT 存储值为&lt;00:00:00的.Net Timespan的正确SQL类型是什么? 即负时间跨度到sql server存储过程 - What is the correct SQL type to store a .Net Timespan with values < 00:00:00? i.e. negative timespan to sql server stored procedure sql日期格式从2013-04-01 00:00:00.000转换为2013-04-01 12:00:00 - sql date format convert from 2013-04-01 00:00:00.000 to 2013-04-01 12:00:00 将秒转换为“00:00:00”格式 - SQL Server - Convert seconds to '00:00:00' format - SQL Server 使用sql格式化字符串日期,例如“ Mon Sep 11 2017 00:00:00 GMT + 0200(CEST)” - Format string date like this “Mon Sep 11 2017 00:00:00 GMT+0200 (CEST)” with sql 用于禁止默认值&#39;1900-01-01 00:00:00.000&#39;的存储过程 - Stored procedure to suppress default values of '1900-01-01 00:00:00.000'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM