Postgresql 在postgres中使用子查询提取日期组件
这难道不管用吗Postgresql 在postgres中使用子查询提取日期组件,postgresql,Postgresql,这难道不管用吗 select extract(DAY FROM TIMESTAMP (select to_timestamp('2015-02-23','YY-MM-DD')::timestamp)) ERROR: syntax error at or near "select" LINE 1: select extract(YEAR FROM TIMESTAMP (select to_timestamp('201...
select extract(DAY FROM TIMESTAMP (select to_timestamp('2015-02-23','YY-MM-DD')::timestamp))
ERROR: syntax error at or near "select"
LINE 1: select extract(YEAR FROM TIMESTAMP (select to_timestamp('201...
^
********** Error **********
ERROR: syntax error at or near "select"
SQL state: 42601
Character: 37
正如这里所解释的
感谢您的帮助:)这确实有效:
psql=> select extract(DAY FROM (select to_timestamp('2015-02-23','YY-MM-DD')::timestamp))
;
date_part
-----------
23
(1 row)
这是因为extract
的语法是:
EXTRACT(field FROM source)
在您的示例中,关键字TIMESTAMP
实际上是文字时间戳的一部分,但您没有使用文字时间戳,而是使用标量子查询表达式,因此请将TIMESTAMP
保留
见:
psql=> select extract(DAY FROM (select to_timestamp('2015-02-23','YY-MM-DD')::timestamp))
;
date_part
-----------
23
(1 row)
这是因为extract
的语法是:
EXTRACT(field FROM source)
在您的示例中,关键字TIMESTAMP
实际上是文字时间戳的一部分,但您没有使用文字时间戳,而是使用标量子查询表达式,因此请将TIMESTAMP
保留
见:
- 以下查询将为您提供所需的结果:
select extract(DAY FROM (select to_timestamp('2015-02-23','YYYY-MM-DD')));
我看到您当前方法存在的问题:
- 正如@harmic指出的,您不需要
关键字,因为TIMESTAMP
函数已经返回了时间戳类型to_TIMESTAMP()
- 此外,您正在将结果从
再次转换为不需要的时间戳转换为\u timestamp()
- 时间戳的格式掩码错误。您使用了
,但考虑到您有四位数的年份,它实际上应该是YY-MM-DD
。在这种情况下,这可能并不重要,但如果您计划提取年份,这可能很重要yyy-MM-DD
- 以下查询将为您提供所需的结果:
select extract(DAY FROM (select to_timestamp('2015-02-23','YYYY-MM-DD')));
我看到您当前方法存在的问题:
- 正如@harmic指出的,您不需要
关键字,因为TIMESTAMP
函数已经返回了时间戳类型to_TIMESTAMP()
- 此外,您正在将结果从
再次转换为不需要的时间戳转换为\u timestamp()
- 时间戳的格式掩码错误。您使用了
,但考虑到您有四位数的年份,它实际上应该是YY-MM-DD
。在这种情况下,这可能并不重要,但如果您计划提取年份,这可能很重要yyy-MM-DD
select extract(DAY FROM to_timestamp('2015-02-23','YYYY-MM-DD'))
Thank@Clodoaldonetoth子选择是不必要的:select extract(DAY FROM to_timestamp('2015-02-23','yyyyy-MM-DD'))
谢谢@ClodoaldoNeto