網上對於用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...