在資料庫搬磚的過程中,免不了要跟日期打交道,比如按日期彙總一些指標、統計某段時間內的總量等。
如果是固定的日期還好,只需直接指定即可,但很多時候都是需要根據當前日期自適應變化的。比如:提取上週一到上週日的資料、提取上個月的資料、提取前n個月的資料。。。
這些要求都有乙個共同點,就是要視當前日期而定!那麼,我們就需要首先獲取當前日期的一些資訊,如當前日期是本週第幾天、本月第幾天等,然後,才能做下一步處理。
一、在提取所需日期區間之前,我們先介紹幾個常用的函式
-- 先執行這一句
set @t = '2018-07-26 11:41:29';
-- 再執行這一句
select date(@t)當前日期,year(@t) 年份, month(@t)月份,week(@t)本年第幾周, day(@t) 本月第幾天,
hour(@t)小時, minute(@t)分鐘, second(@t)秒
執行出來,結果是這樣的:
二、下面介紹幾個常用的日期加減運算函式
1、adddate(expr, days) / subdate(expr, days):
adddat函式有兩個形參,第乙個是基準日期,也即需要運算的日期;第二個是乙個間隔表示式,形如:interval 1 hour,其中interval 是間隔的意思,中間的數字1可以換成任意整數,第三個hour可以替換成day/month/year等時間單位。
subdate同理,只不過變成了減法運算。
完整的用法如下:
select adddate('2018-07-26 11:41:29',interval 1 hour);
select subdate('2018-07-26 11:41:29',interval 1 hour);
2、date_add() / date_sub():
用法同adddate(expr, days) / subdate(expr, days)。
三、日期區間擷取
接下來,利用上面介紹的日期函式的用法,就可以進行日期區間的擷取了。
1、上週
-- 提取上週的日期區間
select curdatlqdhofxe() now,
adddate(adddate(date_sub(curdate(),interval weekday(curdate()) + 1 day),-6),0) startdate,
adddate(date_sub(curdate(),interval weekday(curdate()) + 1 day),0) duetodate
2、上月
-- 上月
select curda now,
date_add(date_add(curdate(),interval -d程式設計客棧ay(curdate())+1 day), interval -1 month) startdate,
date_add(date_add(curdate(),interval -day(curdate()) day), interval 0 month) duetodate
3、前四個月
-- 前四個月
select curdate() now,
adddate(adddate(curdate(),interval -day(curdate())+1 day), interval -4 month) startdate,
date_add(date_add(curdate(),interval -day(curdate()) day), interval 0 month) duetodate
4、上周四到本週三
有時候不是按照自然周進行統計的,需要自定義一周的起止日期,可以按照下面的方式:
select adddate(date_sub(curdate(),interval (if(weekday(curdate())in(3,4,5,6),weekday(curdate()),weekday(curdate())+7 )) + 1 day),-3) startdate
, adddate(date_sub(curdate(),interval (if(weekday(curdate())in(3,4,5,6),weekday(curdate()),weekday(curdate())+7 )) + 1 day),3)duetodate
ok,至此就可以實現時間、日期的資訊提取、任意區間的擷取了~
總結以上所述是小編給大家介紹的mysql指定日期區間的提取方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們**的支援!
本文標題: mysql指定日期區間的提取方法
本文位址: /shujuku/mysql/235750.html
mysql 獲取指定日期到指定日期 區間段的日期
第一種方法 cross join 就相當於mysql中的迴圈 cross join 把兩張表中的資料進行 n m的組合,即笛卡爾積 這裡的兩張表利用 union all都有5條資料,所以進行 cross join 後 就有25條資料 而指定的日期區間就會從這25條資料總產生 select curda...
mysql 固定日期 mysql查詢指定日期
1.今天 select from hb contract in h where to days modify date to days now 2.昨天 select from hb contract in h where to days now to days modify date 1 3.近七...
mysql指定日期加
mysql時間加減函式為date add date sub 定義和用法 date add 函式向日期新增指定的時間間隔。date sub 函式向日期減少指定的時間間隔。語法date add date,interval expr type date sub date,interval expr typ...