Mysql指定日期區間的提取方法

2022-09-26 00:30:16 字數 2312 閱讀 5499

在資料庫搬磚的過程中,免不了要跟日期打交道,比如按日期彙總一些指標、統計某段時間內的總量等。

如果是固定的日期還好,只需直接指定即可,但很多時候都是需要根據當前日期自適應變化的。比如:提取上週一到上週日的資料、提取上個月的資料、提取前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...