我有一个要求,我需要使用sql server将'EEE MMM dd HH:mm:ss zzz yyyy'格式的varchar列转换为日期。
有没有办法在SQL Server或任何其他方法中使用强制转换或转换函数。
这里的EEE是指星期几,例如星期一或星期二等
答案 0 :(得分:2)
我仍然不知道EEE
代表什么,所以我把它从我的答案中删除了。
使用Substring将字符串分解并重新拉伸为可转换格式,并将一些转换为datetime并返回字符串,我想出了这个解决方案。:
-- 'EEE MMM dd HH:mm:ss zzz yyyy'
DECLARE @String varchar(32) = 'EEE JAN 25 16:37:45 -02:00 2017'
SELECT CONVERT(DateTime,
CONVERT(datetimeoffset,
CONVERT(char(19),
CONVERT(DateTime,
SUBSTRING(@String, 9, 3) + -- Day
SUBSTRING(@String, 5, 4) + -- Month
SUBSTRING(@String, 28,4) + -- Year
SUBSTRING(@String, 11,9) -- Time
, 113) -- DateTime
, 126) -- ISO8601 -- string representation of the datetime value in this format: yyyy-mm-ddThh:mi:ss.mmm
+ SUBSTRING(@String, 21, 6) -- ISO8601 with time zone - yyyy-mm-ddThh:mi:ss.mmmZ
, 127) -- You can't convert directly to DateTime, you must first go though DateTimeOffset
)-- Finally, A datetime value
结果:
25.01.2017 16:37:45
答案 1 :(得分:0)
我无法将此日期格式作为标准SQL Server日期格式找到,因此使用了以下内容:
SELECT CAST(SUBSTRING(DateField, 9, 2) + ' '
+ SUBSTRING(DateField, 5, 3) + ' '
+ SUBSTRING(DateField, 27, 4) + ' '
+ SUBSTRING(DateField, 12, 8) AS DATETIME2 )
答案 2 :(得分:0)
另一种切实可行的方法如下。您可能会考虑使用月份参数,
您可以使用
ng build --prod --env=prod
,如果您真的想调查一下。
但是由于我需要将它运行2个月,所以我没有打扰...或者您可以只运行12次而已。
select DATEPART(MM,'january 01 2011')--returns 1
答案 3 :(得分:-1)
SELECT CONVERT(VARCHAR(10), GETDATE(), 111) AS [YYYY/MM/DD]
答案 4 :(得分:-1)
在SQL Server中,您可以使用以下功能:CAST()
和CONVERT()
。其中CONVERT()
功能更丰富,主要用于获取不同风格的日期时间数据。
SQL Server:
SELECT CAST('01-JAN-2009' AS DATETIME)
或者您可以使用:
SELECT CONVERT(DATETIME,'01/JAN/2009') metod
在其他数据库中是特殊功能to_date()