expr is an expression specifying the interval value.
expr is a string.
expr may start with a '-' for negative intervals.
unit is a keyword indicating the units in which the expression should be interpreted.
The following table shows the expected form of the expr argument for each unit value.
unit Value | Expected expr Format |
MICROSECOND | MICROSECONDS |
SECOND | SECONDS |
MINUTE | MINUTES |
HOUR | HOURS |
DAY | DAYS |
WEEK | WEEKS |
MONTH | MONTHS |
QUARTER | QUARTERS |
YEAR | YEARS |
SECOND_MICROSECOND | 'SECONDS.MICROSECONDS' |
MINUTE_MICROSECOND | 'MINUTES.MICROSECONDS' |
MINUTE_SECOND | 'MINUTES:SECONDS' |
HOUR_MICROSECOND | 'HOURS.MICROSECONDS' |
HOUR_SECOND | 'HOURS:MINUTES:SECONDS' |
HOUR_MINUTE | 'HOURS:MINUTES' |
DAY_MICROSECOND | 'DAYS.MICROSECONDS' |
DAY_SECOND | 'DAYS HOURS:MINUTES:SECONDS' |
DAY_MINUTE | 'DAYS HOURS:MINUTES' |
DAY_HOUR | 'DAYS HOURS' |
YEAR_MONTH | 'YEARS-MONTHS' |
mysql>
mysql> select DATE_SUB(curdate(), INTERVAL 1 DAY);
+-------------------------------------+
| DATE_SUB(curdate(), INTERVAL 1 DAY) |
+-------------------------------------+
| 2007-07-21 |
+-------------------------------------+
1 row in set (0.00 sec)
mysql>
14.12.DATE_SUB |
| 14.12.1. | DATE_SUB(date,INTERVAL expr unit) |
| 14.12.2. | DATE_SUB(curdate(), INTERVAL 1 MICROSECOND); |
| 14.12.3. | DATE_SUB(curdate(), INTERVAL 1 MINUTE); |
| 14.12.4. | DATE_SUB(curdate(), INTERVAL 1 HOUR); |
| 14.12.5. | DATE_SUB(curdate(), INTERVAL 1 DAY); |
| 14.12.6. | DATE_SUB(curdate(), INTERVAL 1 WEEK); |
| 14.12.7. | DATE_SUB(curdate(), INTERVAL 1 MONTH); |
| 14.12.8. | DATE_SUB(curdate(), INTERVAL 1 QUARTER); |
| 14.12.9. | DATE_SUB(curdate(), INTERVAL 1 YEAR); |
| 14.12.10. | DATE_SUB(curdate(), INTERVAL 1.1 SECOND_MICROSECOND); |
| 14.12.11. | DATE_SUB(curdate(), INTERVAL 1 SECOND); |
| 14.12.12. | DATE_SUB(curdate(), INTERVAL 1.1 SECOND); |
| 14.12.13. | DATE_SUB(curdate(), INTERVAL 1.1 MINUTE_MICROSECOND); |
| 14.12.14. | DATE_SUB(curdate(), INTERVAL 1.1 MINUTE_SECOND); |
| 14.12.15. | select DATE_SUB(curdate(), INTERVAL 1.1 HOUR_MICROSECOND); |
| 14.12.16. | select DATE_SUB(curdate(), INTERVAL 1.1 HOUR_SECOND); |
| 14.12.17. | select DATE_SUB(curdate(), INTERVAL '1:1:1' HOUR_SECOND); |
| 14.12.18. | select DATE_SUB(curdate(), INTERVAL 1.1 HOUR_MINUTE); (with dot) |
| 14.12.19. | select DATE_SUB(curdate(), INTERVAL '1:1' HOUR_MINUTE); |
| 14.12.20. | select DATE_SUB(curdate(), INTERVAL 1.1 DAY_MICROSECOND); |
| 14.12.21. | select DATE_SUB(curdate(), INTERVAL '1 1:1:1' DAY_SECOND); |
| 14.12.22. | select DATE_SUB(curdate(), INTERVAL '1 1:1' DAY_MINUTE); |
| 14.12.23. | select DATE_SUB(curdate(), INTERVAL '1 1' DAY_HOUR); |
| 14.12.24. | select DATE_SUB(curdate(), INTERVAL 1.1 SECOND_MICROSECOND); |
| 14.12.25. | select DATE_SUB(curdate(), INTERVAL '1-1' YEAR_MONTH); |
| 14.12.26. | select DATE_SUB(curdate(), INTERVAL '1.1' YEAR_MONTH); (with dot) |
| 14.12.27. | Selects all rows with a start_date value from within the last 30 days |
| 14.12.28. | Getting a date 6 months in the past |
| 14.12.29. | Using DATE_SUB function to substract 55 years from current date |