给约会加上一个月.将日设置为给定月份的最后一天


Adding a month to a date. Setting day to last day of given month

我试图在posgresql中添加一个月的日期,同时将DAY设置为该月的最后一天。如何?

示例

UPDATE temp 
SET expiration_date = expiration_date + interval '1' month
WHERE name = 'xxx'

问题是,如果date是2014-04-30,它会增加一个月,date就会变成2014-05-30,而May确实有31天。

我想要完成的示例
2014-04-30 + 1个月-> 2014-05-31
2014-05-31 + 1个月-> 2014-06-30

需要一些提示。在postgres中有可能吗?我可以用PHP来计算,但我希望避免这样做。

如果我没理解错的话,您想要下个月的最后一天。可以这样做:

SELECT date_trunc('mon','2014-04-30'::date+interval'2mon')-interval'1day',
       date_trunc('mon','2014-05-31'::date+interval'2mon')-interval'1day';