2

我正在尝试确定如何将一年中的某一天转回 PgSQL 中的日期。当我这样做时

select date '2013-01-01' + interval '53 days'

我得到一个时间戳:

"2013-02-23 00:00:00"

那么当我执行以下任何操作时怎么会

select extract(date from (date '2013-01-01' + interval '53 days'))

select extract(date from (select date '2013-01-01' + interval '53 days'))

我收到“错误:无法识别时间戳单位“日期””?除了为什么,我怎么能做我想要的,即只获取原始操作结果的日期部分?

4

1 回答 1

5

利用

select (date '2013-01-01' + interval '53 days')::date

或者

select cast(date '2013-01-01' + interval '53 days' as date)

PostgreSQL 的标准 SQL 函数“extract()” 将对时间戳进行操作,但是 a)“date”不是 extract() 的有效参数,并且 b)它返回子字段,而不是子字段的集合。从概念上讲,日期由三个子字段的集合组成:年、月和日。

select extract(year from current_timestamp),
       extract(month from current_timestamp),
       extract(day from current_timestamp),
       -- Concatenate and cast to type "date".
       (extract(year from current_timestamp) || '-' || 
       extract(month from current_timestamp) || '-' ||
       extract(day from current_timestamp))::date
于 2013-04-19T21:30:18.830 回答