Subtract month and day mysql

MysqlSql

Mysql Problem Overview


I need to subtract 1 month and 4 days with mysql, I saw the command DATE_ADD (NOW (), - 1 MONTH) perfect for 1 month but for 1 month and 4 days, using 31 days is not valid for every month that some bring 30, 29, 28. I can not add 31 + 4, 30 + 4, etc.

Mysql Solutions


Solution 1 - Mysql

using DATE_SUB [docs] like :

DATE_SUB((DATE_SUB(curdate(), INTERVAL 1 MONTH)), INTERVAL 4 DAY)

Solution 2 - Mysql

SELECT DATE_ADD(DATE_ADD(NOW(),INTERVAL -1 MONTH), INTERVAL -4 DAY)

Solution 3 - Mysql

Keep it simple:

SELECT CURDATE() - INTERVAL 1 MONTH - INTERVAL 4 DAY;

or

SELECT '2014-03-27' - INTERVAL 1 MONTH - INTERVAL 4 DAY;

or if you like to preserve the current time:

SELECT NOW() - INTERVAL 1 MONTH - INTERVAL 4 DAY;

(Tested on MySQL 5.1.73 and newer)

Solution 4 - Mysql

SELECT CURRENT_TIMESTAMP + INTERVAL - 1 MONTH + INTERVAL - 4 DAY;
or
SELECT CURRENT_DATE + INTERVAL - 1 MONTH + INTERVAL - 4 DAY;

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAlexd2View Question on Stackoverflow
Solution 1 - MysqlHaim EvgiView Answer on Stackoverflow
Solution 2 - MysqlptomliView Answer on Stackoverflow
Solution 3 - MysqldavidView Answer on Stackoverflow
Solution 4 - MysqlM RostamiView Answer on Stackoverflow