在使用 MySQL 查詢數據時,經常需要限定查詢時間范圍,可以使用日期函數來實現。比如需要查詢最近 30 天的數據,可以使用DATE_SUB
函數來獲取當前日期的前 30 天,然后使用WHERE
子句過濾數據。
SELECT * FROM table_name WHERE date_column >= DATE_SUB(NOW(), INTERVAL 30 DAY);
以上 SQL 語句中,table_name
是表名,date_column
是日期列名,可根據實際情況進行修改。關鍵是DATE_SUB(NOW(), INTERVAL 30 DAY)
這一部分。它表示獲取當前日期的前 30 天。
以上 SQL 語句會返回所有日期在最近 30 天內的記錄。也可以根據需要對其他條件進行過濾,比如:
SELECT * FROM table_name WHERE date_column >= DATE_SUB(NOW(), INTERVAL 30 DAY) AND other_column = 'some_value';
以上 SQL 語句在查詢日期范圍的基礎上,還增加了一個條件:其他列的值等于某個特定值。
除了DATE_SUB
函數,還可以使用BETWEEN
運算符來限定日期范圍:
SELECT * FROM table_name WHERE date_column BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW();
以上 SQL 語句的含義是:獲取當前日期的前 30 天到現在之間的數據。
如果日期列的數據類型是字符串(比如varchar
),則需要將其轉換為日期類型后再進行比較。可以使用STR_TO_DATE
函數將字符串轉換為日期:
SELECT * FROM table_name WHERE STR_TO_DATE(date_column, '%Y-%m-%d') >= DATE_SUB(NOW(), INTERVAL 30 DAY);
以上 SQL 語句中,'%Y-%m-%d'
表示字符串的日期格式,可以根據實際情況進行修改。需要注意的是,STR_TO_DATE
函數會降低查詢效率,因為需要對所有數據進行轉換,建議在表設計時將日期列定義為日期類型。