Postgres将字符串转换为时间

时间:2016-06-13 14:11:20

标签: sql postgresql type-conversion

我有以下查询:

SELECT id, start_date::TIME, occurrence->0->>'startsOn'  FROM service WHERE name='A.F';

返回:

id  | start_date |            ?column?             
------+------------+---------------------------------
 1573 | 18:00:00   | Mon, 29 Jun 2015 18:00:00 +0000
 1592 | 10:00:00   | Wed, 24 Jun 2015 10:00:00 +0000
 1605 | 18:00:00   | Thu, 25 Jun 2015 18:00:00 +0000
 1571 | 10:00:00   | Mon, 29 Jun 2015 10:00:00 +0000
 1591 | 20:15:00   | Tue, 30 Jun 2015 20:15:00 +0000
 1578 | 18:00:00   | Mon, 29 Jun 2015 20:00:00 +0000
 1620 | 12:00:00   | Sat, 27 Jun 2015 12:00:00 +0000
(7 rows)

我要做的是将occurrence->0->>'startsOn'转换为时间,因此预期结果应为:

  id  | start_date |            ?column?             
------+------------+---------------------------------
 1573 | 18:00:00   | 18:00:00
 1592 | 10:00:00   | 10:00:00
 1605 | 18:00:00   | 18:00:00
 1571 | 10:00:00   | 10:00:00
 1591 | 20:15:00   | 20:15:00
 1578 | 18:00:00   | 20:00:00
 1620 | 12:00:00   | 12:00:00

我尝试了以下内容:

SELECT id, start_date::TIME, occurrence->0->>'startsOn'::TIME  FROM service WHERE name='A.F';

But it is not working as it gives me the following syntax error:
ERROR:  invalid input syntax for type time: "startsOn"

1 个答案:

答案 0 :(得分:1)

select ('[{"startsOn":"Mon, 29 Jun 2015 18:00:00 +0000"}]'::json->0->>'startsOn')::timestamp::time

我没有列“发生”所以我从你的输出中嘲笑它

相关问题