1. 程式人生 > >sql 語句查詢今天、昨天、近7天、近30天、一個月內、上一月 資料

sql 語句查詢今天、昨天、近7天、近30天、一個月內、上一月 資料

SQL語句如下:

  • 查詢當天的所有資料
SELECT * FROM 表名 WHERE DATEDIFF(欄位,NOW()) = 0

SELECT * FROM 表名 WHERE to_days(時間欄位名) = to_days(now());
  • 查詢昨天的所有資料
SELECT * FROM 表名 WHERE DATEDIFF(欄位,NOW())=-1

SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS(時間欄位名) = 1
  • 查詢未來第n天的所有資料
//當n為負數時,表示過去第n天的資料

SELECT * FROM 表名WHERE DATEDIFF(欄位,NOW())=n
  • 查詢未來n天內所有資料
//n天內

SELECT * FROM 表名 WHERE DATEDIFF(欄位,NOW())<n AND DATEDIFF(欄位,NOW())>=0
  • 查詢出今天,年月日

SELECT DATE_SUB(CURDATE(), INTERVAL 0 DAY)
  • 幾個小時內的資料
DATE_SUB(NOW(), INTERVAL 5 HOUR)
  • 7天
SELECT * FROM 表名 wher DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(時間欄位名)
  • 近30天
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(時間欄位名)
  • 本月
SELECT * FROM 表名 WHERE DATE_FORMAT( 時間欄位名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
  • 上一月
SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 時間欄位名, '%Y%m' ) ) =1
  • 查詢過去n天內所有資料
//包含當天

SELECT * FROM 表名 WHERE DATEDIFF(欄位,NOW())<=0 AND DATEDIFF(欄位,NOW())>-n

//不包含當天

SELECT * FROM 表名 WHERE DATEDIFF(欄位,NOW())<0 AND DATEDIFF(欄位,NOW())>-n
  •  

DATEDIFF函式說明:

DATEDIFF() 函式用於返回兩個日期之間的天數。 語法:DATEDIFF(date1,date2) date1 和 date2
引數是合法的日期或日期/時間表達式。 註釋: 
1. 只有值的日期部分參與計算。 
2. 當日期date1<date2時函式返回值為正數,date1=date2時函式返回值為0,date1>date2 時函式返回值為負數。
3. Mysql的DATEDIFF只有兩個引數。SQL Server有三個引數,詳細內容可見:SQL Date函式