错误:“MI”的值无效详细信息:值必须是整数

man*_*100 3 sql postgresql sql-timestamp to-timestamp amazon-aurora

在 PostgreSQL 中,我收到以下请求的错误:

SELECT TO_TIMESTAMP('2020-03-07T22:34:18Z', 'YYYY-MM-DDTHH24:MI:SSZ');
Run Code Online (Sandbox Code Playgroud)

产生:

错误:“MI”的值“:1”无效详细信息:值必须是整数。

为什么会在“:1”处而不是之前出现错误?

Cai*_*ard 7

Postgres 12 可以处理您发布的查询,9.4 会给出您所说的错误,因为它被解释DDTH为“后面有字母的日期”,例如1st, 2nd, 3rd, 4thieNth

所以..解析器将消耗这一天07,然后消耗掉接下来的两个字符并将它们扔掉(T2被扔掉),然后它查看格式字符串中的下一个内容,即H24:- 这不是任何可识别的占位符,所以它在到达MI它识别的位置之前,也会从输入中跳过 4 个字符,但现在已经:1处于:18要解析的位置。请参阅下面的评论:

SELECT TO_TIMESTAMP(
  '2020-03-07T22:34:18Z', 
-- YEARsMOsDAYNssssMI
  'YYYY-MM-DDTHH24:MI');

Key: YEAR/MO/DAYN - recognised things
     s - skipped things
Run Code Online (Sandbox Code Playgroud)

要忽略 T ,请T在格式字符串中使用空格,而不是文字:

SELECT TO_TIMESTAMP('2020-03-07T22:34:18Z', 'YYYY-MM-DD HH24:MI:SS');
Run Code Online (Sandbox Code Playgroud)

实际上,您几乎可以使用通常会被跳过的任何其他内容