MySQL: How to Go Back 30 Days from the Present Date and Time
- CURDATE() and DATE_SUB(): This method retrieves the current date and subtracts the specified days.
CURDATE()
: This function returns the current date as a YYYY-MM-DD format.DATE_SUB(date_expression, INTERVAL interval_expression)
: This function subtracts a specified time interval from a date or datetime expression.
Here's the query:
SELECT DATE_SUB(CURDATE(), INTERVAL 30 DAY) AS thirty_days_ago;
This query will return the date that is 30 days before the current date.
- NOW() and INTERVAL: This method retrieves the current datetime and subtracts the specified days using the INTERVAL keyword.
INTERVAL
: This keyword is used to specify a time interval. You can use units like DAY, HOUR, MINUTE, etc.
SELECT NOW() - INTERVAL 30 DAY AS thirty_days_ago;
SELECT DATE_SUB(CURDATE(), INTERVAL 30 DAY) AS thirty_days_ago;
This code retrieves the current date using CURDATE()
and subtracts 30 days using DATE_SUB()
. The result is stored in the alias thirty_days_ago
.
SELECT NOW() - INTERVAL 30 DAY AS thirty_days_ago;
- SUBDATE(): This function is similar to
DATE_SUB()
but accepts the number of days to subtract as a direct argument.
SELECT SUBDATE(CURDATE(), 30) AS thirty_days_ago;
This code achieves the same outcome as DATE_SUB()
, just with a slightly different syntax.
- DATEDIFF(): This function (technically for informational purposes) calculates the difference between two dates in days. However, you can use it creatively to achieve the desired result.
Note: This method is less common and might be considered a trick.
Here's the query (technically not subtraction but achieves the same result):
SELECT NOW() - INTERVAL DATEDIFF(NOW(), CURDATE() - INTERVAL 30 DAY) DAY AS thirty_days_ago;
This code first calculates the difference between the current date (CURDATE() - INTERVAL 30 DAY
) and the current datetime (NOW()
) using DATEDIFF()
. It then subtracts that difference (in days) from the current datetime using the INTERVAL
keyword.
mysql