如何用静态数字替换postgres中的日期

问题描述 投票:0回答:2

我正在编写一个Postgres程序,我想用一些静态编号替换日期的日期部分。

例如:-

varDate Date default '2018-05-21';

说我希望这个日期为'2018-05-08';

任何人都可以告诉如何实现这一点。

直到现在我试过的是这个

varDate := varDate - interval '1 day' * 21 + interval '1 day' * 8;

上面的表达式给了我正确的结果。但是,是否有任何快捷方式只能更改日期的日期部分。

sql postgresql postgresql-9.5
2个回答
3
投票

据我了解,您希望将当月的日期更改为8。

一种方法是将日期“截断”到月初,然后再添加8天:

vardate := date_trunc('month', vardate)::date + 8;

date_trunc返回timestamp,这就是为什么需要演员::date

另一种选择是根据现有日期“建立”日期:

vardate := make_date(extract(year from vardate)::int, extract(month from vardate)::int, 8);

0
投票

另一种选择是在日期中添加若干天,以便在第8天登陆:

select vardate::date + (8 - extract(day from vardate) * interval '1 day'
© www.soinside.com 2019 - 2024. All rights reserved.