MySql 操作時間

MySql 操作時間查詢:日、周、月、季度、年

這篇博客的記錄,主要是在這次的項目中運用到了很多時間函數,才發現自己對mysql的時間函數記憶不夠,在統計中,很多地方都是用到時間進行統計,而靈活運用sql函數,可以事半功倍。

演示

找出當前今天的數據:

SELECT * FROM table WHERE DATE(時間字段) = CURDATE();

DATE(),這個函數用於將時間格式(年月日 時分秒)轉換成年月日,CURDATE()函數是獲取當前的年月日,NOW()是獲取當前年月日 時分秒

找出前一天的數據:

SELECT * FROM table WHERE DATE_SUB(時間字段, INTERVAL 1 DAY) 
SELECT * FROM table WHERE DATE(時間字段) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)

DATE_SUB()函數得到指定日期前一天的日期/把1改爲任意數字就可以得到前N天的日期,還有一個和它相反的函數
DATE_ADD()函數得到指定日期後一天的日期/把1改爲任意數字就可以得到後N天的日期
其他用法

SELECT * DATE_SUB('2019-05-10', INTERVAL 1 DAY) 表示 2019-05-09
SELECT * DATE_SUB('2019-05-10', INTERVAL 0 DAY) 表示 2019-05-10
SELECT * DATE_SUB('2019-05-10', INTERVAL -1 DAY) 表示 2019-05-11
SELECT * DATE_SUB(CURDATE(), INTERVAL 1 MONTH) 表示 2019-04-10
SELECT * DATE_SUB(CURDATE(), INTERVAL -1 MONTH) 表示 2019-06-10
SELECT * DATE_SUB(CURDATE(), INTERVAL 1 YEAR) 表示 2018-05-10
SELECT * DATE_SUB(CURDATE(), INTERVAL -1 YEAR) 表示 2019-05-10

兩個時間中間差多少天:

SELECT DATEDIFF('2019-05-10', '2019-05-09'); 得到的結果爲:1 

DATEDIFF()函數用於時間相減

獲取上個月的最後一天:

SELECT DATE_SUB(LAST_DAY(CURDATE()), INTERVAL 1 MONTH)

LAST_DAY()函數用於獲取某個時間裏,這個月的最後一天,以上SQL的時候是,取到當前月的最後一天,在通過DATE_SUB()函數中的INTERVAL 1 MONTH減去一個月,得到上個月的最後一天

統計七天的數據:

SELECT * FROM table WHERE DATE(時間字段) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND DATE(時間字段) <= DATE_SUB(CURDATE(), INTERVAL 1 DAY)

查詢某個時間段內的數據:

SELECT * FROM table WHERE DATE_FORMAT(時間字段, '%y-%m-%d') >= '某時間' AND DATE_FORMAT(時間字段, '%y-%m-%d') <= '某時間'

獲取周:

SELECT WEEK(CURDATE(), 1)  表示當前時間是今年第幾周

獲取上一週:

SELECT WEEK(DATE_SUB(CURDATE(), INTERVAL 7 DAY),1)

三十天的數據:

select * from 表名 where date_sub(curdate(), interval 30 day) <= date(時間字段名);
select * from table where date_sub(curdate(), interval 1 month) <= 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章