當(dāng)我們在處理日期數(shù)據(jù)時,有時需要篩選一些大于今天或小于今天的數(shù)據(jù)。在MySQL中,我們可以使用下面的方法來實(shí)現(xiàn)。
-- 大于今天的數(shù)據(jù) SELECT * FROM table_name WHERE date_col >CURDATE(); -- 小于今天的數(shù)據(jù) SELECT * FROM table_name WHERE date_col< CURDATE();
其中,CURDATE() 函數(shù)可以獲取當(dāng)前日期并以 YYYY-MM-DD 的格式返回。我們可以將其與日期列進(jìn)行比較,從而篩選出符合條件的數(shù)據(jù)。需要注意的是,日期列的格式應(yīng)該與 CURDATE() 函數(shù)返回的格式一致。
此外,我們還可以將 CURDATE() 函數(shù)替換為其它函數(shù)來實(shí)現(xiàn)更復(fù)雜的日期比較,比如:
-- 大于昨天的數(shù)據(jù) SELECT * FROM table_name WHERE date_col >DATE_SUB(CURDATE(), INTERVAL 1 DAY); -- 大于本周的周一的數(shù)據(jù) SELECT * FROM table_name WHERE date_col >DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY); -- 大于本月的第一天的數(shù)據(jù) SELECT * FROM table_name WHERE date_col >DATE_SUB(CURDATE(), INTERVAL DAYOFMONTH(CURDATE()) - 1 DAY);
需要注意的是,由于日期格式的不同和時區(qū)等原因,有時我們需要在查詢語句中手動指定日期字符串或時間偏移量。這些情況下,我們可以使用 STR_TO_DATE() 函數(shù)或 CONVERT_TZ() 函數(shù)等來進(jìn)行轉(zhuǎn)換。