我有一个非常标准的日期作为字符串,我需要解析为日期类型:
"2016-06-01T23:34:25+00:00"
我使用'YYYY-MM-DDTHH24:MI:SS'
作为格式掩码,此查询尝试获取并解析日期:
SELECT to_date('last_updated_on', 'YYYY-MM-DDTHH24:MI:SS')
AS last_updated_on FROM locations
limit 1
我发生了这样的错误:
ERROR: invalid value ":2" for "MI"
SQL state: 22007
Detail: Value must be an integer.
我已经查看了文档中的所有内容,并试图找出发生这种情况的原因,我完全感到困惑。
我正在使用PostgreSQL 9.4
答案 0 :(得分:4)
使用T
将""
格式字符串包围。如果需要保留日期的时间部分,请使用to_timestamp()
。
SELECT to_date('last_updated_on', 'YYYY-MM-DD"T"HH24:MI:SS')
AS last_updated_on FROM locations
limit 1
转换为带时间戳的日期
SELECT to_timestamp('last_updated_on', 'YYYY-MM-DD"T"HH24:MI:SS')
AS last_updated_on FROM locations
limit 1
答案 1 :(得分:4)
问题似乎是字符串中间的T
n。这看起来很简单:
SELECT to_date(replace('2016-06-01T23:34:25+00:00', 'T', ''), 'YYYY-MM-DD HH24:MI:SS')
但是,您可能需要to_timestamp()
:
SELECT to_timestamp('2016-06-01T23:34:25+00:00', 'YYYY-MM-DD HH24:MI:SS')
另请注意,last_updated_on
周围有单引号。这意味着它被解释为字符串,而不是列名。