Sql 与日期时间格式混淆
我有类似于“Wed Jan 22 13:30:52 UTC 2020”的字符串,需要使用Sql Server将此字符串转换为IST格式Sql 与日期时间格式混淆,sql,sql-server,Sql,Sql Server,我有类似于“Wed Jan 22 13:30:52 UTC 2020”的字符串,需要使用Sql Server将此字符串转换为IST格式 我不知道上述格式。这似乎不是SQL Server内部识别的任何格式: 所以,你必须自己转换它。假设我们有您的样本日期: declare @date varchar(50) = 'Wed Jan 22 13:30:52 UTC 2020' 可以使用子字符串获取日期部分(假设每个日期使用完全相同的格式): 现在,您只需要从这些日期部分构建日期时间值: selec
我不知道上述格式。这似乎不是SQL Server内部识别的任何格式: 所以,你必须自己转换它。假设我们有您的样本日期:
declare @date varchar(50) = 'Wed Jan 22 13:30:52 UTC 2020'
可以使用子字符串获取日期部分(假设每个日期使用完全相同的格式):
现在,您只需要从这些日期部分构建日期时间值:
select datetimefromparts(convert(int, substring(@date, 9, 3)) + 2000,
case substring(@date, 5, 3) when 'Jan' then 1
when 'Feb' then 2
...
end,
case substring(@date, 1, 3) when 'Mon' then 1
when 'Tue' then 2
when 'Wed' then 3
...
end,
convert(int, substring(@date, 12, 2)),
convert(int, substring(@date, 15, 2)),
convert(int, substring(@date, 18, 2)),
0)
最后,您可以在时区“印度标准时间”添加,
以定义IST时区
select datetimefromparts(convert(int, substring(@date, 9, 3)) + 2000,
case substring(@date, 5, 3) when 'Jan' then 1
when 'Feb' then 2
...
end,
case substring(@date, 1, 3) when 'Mon' then 1
when 'Tue' then 2
when 'Wed' then 3
...
end,
convert(int, substring(@date, 12, 2)),
convert(int, substring(@date, 15, 2)),
convert(int, substring(@date, 18, 2)),
0)
AT TIME ZONE 'India Standard Time'
以下内容可能会有所帮助:
declare @date varchar(50) = 'Wed Jan 22 13:30:52 UTC 2020'
select CAST(SUBSTRING(@date, 5, CHARINDEX('UTC',@date,1)-6) + SUBSTRING(@date,CHARINDEX('UTC',@date,1)+3,100) AS DATETIME) AT TIME ZONE 'India Standard Time'
AT TIME ZONE
适用于SQL Server 2016及更高版本。是的,但我混淆了这种“Wed Jan 22 13:30:52 UTC 2020”格式。实际上,上述字符串从一个csv传输到表中,这里我需要日期转换。删除了不需要的标记。。。
declare @date varchar(50) = 'Wed Jan 22 13:30:52 UTC 2020'
select CAST(SUBSTRING(@date, 5, CHARINDEX('UTC',@date,1)-6) + SUBSTRING(@date,CHARINDEX('UTC',@date,1)+3,100) AS DATETIME) AT TIME ZONE 'India Standard Time'