PostgreSQL无法使用to_date()分析到日期的字符串
我有一个非常标准的日期作为字符串,需要解析为日期类型:PostgreSQL无法使用to_date()分析到日期的字符串,sql,postgresql,Sql,Postgresql,我有一个非常标准的日期作为字符串,需要解析为日期类型: "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"
"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将格式字符串中的
T
用“
包围起来。如果需要保留日期的时间部分,请使用来\u timestamp()
转换为带有时间戳的日期
SELECT to_timestamp('last_updated_on', 'YYYY-MM-DD"T"HH24:MI:SS')
AS last_updated_on FROM locations
limit 1
问题似乎是字符串中间的
T
n。这似乎是两项工作:
SELECT to_date(replace('2016-06-01T23:34:25+00:00', 'T', ''), 'YYYY-MM-DD HH24:MI:SS')
但是,您可能希望使用\u timestamp()
:
还要注意的是,在上一次更新的日期前后有单引号。这意味着它被解释为字符串,而不是列名。。谢谢是的,我在写问题的时候把上次更新的代码放进去了。这里的值来自一个jsonb值,我把它拿出来试图澄清问题的含义。谢谢!我怀疑
T
是罪魁祸首,但不知道如何将其定义为字面上的“T”
SELECT to_date(replace('2016-06-01T23:34:25+00:00', 'T', ''), 'YYYY-MM-DD HH24:MI:SS')
SELECT to_timestamp('2016-06-01T23:34:25+00:00', 'YYYY-MM-DD HH24:MI:SS')