在SQL server中,我有一个列存储此格式的日期:
2017-06-22T00:43:15 + 0300
作为字符串。
我尝试做的是将这些字符串转换为实际的datatimeoffset数据,以便将它们作为日期处理。
到目前为止,我发现了从datetimeoffset转换为其他时间戳格式的多个函数,但这些函数都没有引用字符串。
https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetimeoffset-transact-sql
在postgresql数据库上出现完全相同的问题。到目前为止,我设法实现的最好的方法是截断时区并将其余字符串转换为时间戳。理想情况下,我不想使用这种有损转变。
答案 0 :(得分:2)
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
答案 1 :(得分:0)
Postgres:
to_timestamp('2017-06-22T00:43:15+0300', 'YYYY-MM-DD HH24:MI:SS')
您可以尝试使用该postgres功能。