在 SQL Server 和 Postgresql 中将字符串转换为日期时间偏移量



在SQL服务器中,我有一列存储这种格式的日期:

2017-06-22T00:43:15+0300

作为字符串。

我正在尝试做的是将这些字符串转换为实际的数据时间偏移量数据,以便将它们作为日期处理。

到目前为止,我已经找到了多个用于从日期时间偏移量转换为其他时间戳格式的功能,但这些函数都不是指字符串。
https://learn.microsoft.com/en-us/sql/t-sql/data-types/datetimeoffset-transact-sql

在postgresql数据库上也出现了完全相同的问题。到目前为止,我设法实现的最好的结果就是截断时区并将字符串的其余部分转换为时间戳。理想情况下,我不想使用这种有损转换。

SQL Server 中的Time Zone Offset是这样表示的

[+|-] hh:mm:

在数据中,offset部分中缺少分号

DECLARE @stringtime VARCHAR(100)= '2017-06-22T00:43:15+0300'
SET @stringtime = Reverse(Stuff(Reverse(@stringtime), 3, 0, ':'))
SELECT Cast(@stringtime AS DATETIMEOFFSET(4)) 

结果 : 2017-06-22 00:43:15.0000 +03:00

Postgres :

to_timestamp('2017-06-22T00:43:15+0300', 'YYYY-MM-DD HH24:MI:SS')

您可以尝试使用该 Postgres 函数。

最新更新