mysql 對取當前日期周一和週日語句的詳細解析

2021-09-02 03:16:12 字數 2017 閱讀 4855

網上對於用mysql取當前日期周一和週日的方法非常多,但基本上都只有乙個方法,沒有什麼解釋,後果就是會用,但為什麼要這樣用,就不一定知道了。

自己研究了下,寫點東西,避免遺忘

select subdate(curdate(),date_format(curdate(),'%w')-1)//獲取當前日期在本週的周一

select subdate(curdate(),date_format(curdate(),'%w')-7)//獲取當前日期在本週的週日

這兩句語句是mysql用來取當前日期的周一或週日的乙個方法,那麼這句如何運作的呢?

%w 是以數字的形式來表示週中的天數( 0 = sunday, 1=monday, . . ., 6=saturday),0為週日,6為週六,跟我們一般的認知,一周是從周一開始的並不一樣。

date_format是乙個日期轉換函式

date_format(curdate(),'%w')表示當前日期到上週週日共有幾天的間隔,即當前日期減去上週週日的日期=天數(例:curdate()為2011-01-11,那麼上週週日為2011-01-09,兩者相減為2)所以若單獨輸出這一句:select date_format(curdate(),'%w') 結果就是2

在mysql api裡對於subdate函式是這樣解釋的:

select subdate(now( ), 1) as 'yesterday',

subdate(now( ), interval -1 day) as 'tomorrow';

正值為昨天,負值為明天,當前時間的起點,就是當前時間的上週週日

subdate函式就是用當前時間減去2天,得到上週週日的時間為2011-01-09

那麼如果執行select subdate(curdate(),date_format(curdate(),'%w')-2)這句,就表示用當前時間-(2-2),即-0,得到的結果就是當前日期本身了。

如果把%w換成%d呢

%d 是用兩位數字來表示月中的天數( 00, 01, . . ., 31)

直接輸出的結果就應該是11,表示當前日期在乙個月內是第幾天

select date_format('2011-01-11','%d')

放到開始的語句裡就表示用當前時間減去11,結果為2010-12-31

select subdate('2011-01-11',date_format('2011-01-11','%d'))

/*今天*/

select * from 表名 where to_days(時間字段) = to_days(now());

/*昨天*/

select * from 表名 where to_days(now())-to_days(時間字段) = 1;

/*近7天*/

select * from 表名 where date_sub(curdate(), interval 7 day) <= date(時間字段);

/*查詢距離當前現在6個月的資料*/

select * from 表名 where 時間字段 between date_sub(now(),interval 6 month) and now();

/*查詢當前這週的資料*/

select * from 表名 where yearweek(date_format(時間字段,'%y-%m-%d')) = yearweek(now());

/*查詢上週的資料*/

select * from 表名 where yearweek(date_format(時間字段,'%y-%m-%d')) = yearweek(now())-1;

/*查詢當前月份的資料*/

select * from 表名 where date_format(時間字段,'%y-%m')=date_format(now(),'%y-%m');

/*查詢上個月的資料*/

select * from 表名 where date_format(時間字段,'%y-%m')=date_format(date_sub(curdate(), interval 1 month),'%y-%m'); 

mysql 對取當前日期周一和週日語句

1 查詢當天的資料 select from 表名 where to days 時間字段 to days now 2 查詢當周的資料 select from 表名 where yearweek date format 時間字段,y m d yearweek now 3 查詢當月的資料 select f...

mysql 對取當前日期周一和週日語句的詳細解析

網上對於用mysql取當前日期周一和週日的方法非常多,但基本上都只有乙個方法,沒有什麼解釋,後果就是會用,但為什麼要這樣用,就不一定知道了。自己研究了下,寫點東西,避免遺忘 select subdate curdate date format curdate w 1 獲取當前日期在本週的周一 sel...

計算當前日期所在周的周一和週日

根據日期計算所在周的周一和週日 param time 指定的日期 private static void convertweekbydate date time system.out.println 要計算日期為 sdf.format cal.gettime 輸出要計算日期 cal.setfirst...