在 SQL Server 和 Postgresql 中将字符串转换为 datetimeoffset

Jas*_*ine 4 sql-server postgresql datetime datetimeoffset

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

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

作为字符串。

我想要做的是将这些字符串转换为实际的 datatimeoffset 数据,以便将它们作为日期处理。

到目前为止,我已经找到了多个用于从 datetimeoffset 转换为其他时间戳格式的函数,但这些函数都没有引用字符串。
https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetimeoffset-transact-sql

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

Pரத*_*ீப் 5

Time Zone Offset 在 Sql Server 中是这样表示的

[+|-] 时:分:

在您的数据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)) 
Run Code Online (Sandbox Code Playgroud)

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