1

我正在尝试获取当天减去五天的值,但我想要特殊格式的结果(不是 MySQL 格式):

SELECT DATE_FORMAT(DATE_SUB( DATE_FORMAT( CURDATE( ) ,  '%d.%m.%Y' ) , INTERVAL -5
DAY ),  '%d.%m.%Y')

我更改了 curdate() 的格式和结果的格式,但当天是:

03.09.2013

我得到如下结果:

25.09.2003

任何人都可以向我解释为什么我不能得到正确的结果有什么问题吗?

4

1 回答 1

0

首先,您应该减去DATE (或兼容)格式的值,然后将其转换为您想要接收的格式:

SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL -5 DAY), '%d.%m.%Y')

您查询中的第二个问题是您要减去一个负值,最后加上一个值(例如10 - (-5) = 15:)。您应该使用以下方法之一:

SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 DAY), '%d.%m.%Y')

或者

SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -5 DAY), '%d.%m.%Y')

还有一个更短的方法来编写这个查询:

SELECT DATE_FORMAT(CURDATE() - INTERVAL 5 DAY,  '%d.%m.%Y')

SQLFiddle在这里

也可以看看:

于 2013-09-03T12:56:07.050 回答