它可以归结为具体的与一般的,其中day
是具体的,month
不是.day
和hour
的情况与以下情况相同:
select '2022-03-13 12:00 PDT'::timestamptz - '1 day'::interval;
?column?
------------------------
2022-03-12 12:00:00-08
select '2022-03-13 12:00 PDT'::timestamptz - '24 hours'::interval;
?column?
------------------------
2022-03-12 11:00:00-08
DST发生在PST/PDT的2022-03-13
号上午.所以一天被概括为一天前的同一时间,而24小时前实际上是24小时过go 了.
就你而言:
select
now() - interval '1 month'
, now() - interval '30 days';
?column? | ?column?
-------------------------------+-------------------------------
2022-03-27 14:44:33.515669-07 | 2022-03-28 14:44:33.515669-07
1 month
将追溯到一个月前的同一日期和时间,而30 days
将追溯到实际的30天.
在这种情况下:
select '2022-03-30 21:17:05'::timestamp - interval '1 month' ;
?column?
---------------------
2022-02-28 21:17:05
2月没有第30天,所以它会一直持续到月底28日.