MySQL查詢日期型數值常用SQL
阿新 • • 發佈:2019-01-11
- MySQL 獲得當前日期/時間函式:
TO_DAYS()函式返回的一個天數,這個天數等於從epoch到給定日期的天數;
- 查詢今天新增的記錄
# 欄位名不需要加引號;
SELECT * FROM test WHERE TO_DAYS(add_time) = TO_DAYS(NOW());
- 查詢昨天新增的記錄
SELECT * FROM test WHERE TO_DAYS(NOW())-TO_DAYS(add_time) = 1;
- 查詢近7天新增的記錄;
# 這裡的近七天包含今天
SELECT * FROM test WHERE DATE_SUB(CURDATE(), INTERVAL 6 DAY) <=DATE(add_time)
DATE_SUB() 函式用來從給定日期減去給定的時間間隔。語法:
DATE_SUB(date,INTERVAL expr type)
date
引數是合法的日期表示式;
expr
引數是您希望新增的時間間隔。
type
可以取SECOND/MINUTE/HOUR/DAY/WEEK/MONTH/QUARTER/YEAR等等
與DATE_SUB()對應的函式是DATE_ADD()函式,用來從給定日期加上給定的時間間隔。
這裡的給定的時間間隔除了天,還可以是其他所有DATE_SUB()函式支援的型別。
- 查詢本週(自然周)修改的記錄
SELECT * FROM test WHERE YEARWEEK(DATE_FORMAT(update_time,'%Y%m%d'),1) = YEARWEEK(now());
YEARWEEK() 是獲取年份和週數的一個函式,函式語法為
YEARWEEK(date[,mode])
;引數mode
可選。
預設情況下,是把週日,作為一週的開始。而mode
則用來指定‘First day of week’ 以及用什麼樣的邏輯,來計算一年中的第一週。詳見此文
- 查詢本月新增的記錄
SELECT * FROM test WHERE DATE_FORMAT( add_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
DATE_FORMAT() 函式用於以不同的格式顯示日期/時間資料。
語法:DATE_FORMAT(date,format)
;date 引數是合法的日期。format 規定日期/時間的輸出格式。
這裡要注意的是。format
中大小寫敏感,詳見w3cshcool
- 查詢上個月新增的記錄;
SELECT * FROM test WHERE PERIOD_DIFF(date_format(NOW( ) , '%Y%m' ) , DATE_FORMAT(add_time, '%Y%m' ) ) =1
- 查詢本季度新增的資料(第一季度為1-3月)
#如果是查詢本年,需要加上YEAR()條件;
SELECT * from test WHERE QUARTER(add_time)=QUARTER(now()) AND YEAR(add_time)=YEAR(NOW());
- 查詢上一季度新增的資料
SELECT * FROM test WHERE QUARTER(add_time)=QUARTER(DATE_SUB(now(),INTERVAL 1 QUARTER)) AND YEAR(add_time)=YEAR(NOW());
持續完善中…..