7

假设我有一个 select 语句:

SELECT COUNT(*), wedding, DATE_FORMAT(weddate, '%y %m %d') FROM weddingtable

我想让它可以从它返回的月份中减去 1:例如:

SELECT COUNT(*), wedding, DATE_FORMAT(weddate, '%y %m-1 %d') FROM weddingtable

它似乎只是将“-1”附加到月份整数,而不是实际从月份中减去一个。我该如何做到这一点?(换句话说,它通常会返回 5 来代替 %m,它会返回 4,等等)

注意:对于一月份,我希望代替 %m,它将是“0”。

4

2 回答 2

14

您的解决方案可以来自:减去月份和日期mysql

例如(DATE_SUB(curdate(), INTERVAL 1 MONTH)

SELECT COUNT(*), wedding, DATE_SUB(weddate,INTERVAL 1 MONTH) FROM weddingtable
于 2013-06-05T17:18:02.907 回答
0

要从 中减去一个月weddate,请使用webdate - INTERVAL 1 MONTH

SELECT COUNT(*), wedding, DATE_FORMAT(weddate - INTERVAL 1 MONTH, '%y %m %d') FROM weddingtable

更新:要在减法后用月份“0”减去,您不能再使用日期算术(因为没有月份 0)。相反,您必须使用extract函数分离日期并将各部分连接为字符串:

concat_ws(' ', extract(year from webdate), 
               extract(month from webdate)-1, 
               extract(date from webdate))
于 2013-06-05T17:18:28.927 回答