select subdate(curdate(),date_format(curdate(),'%w')-1)//獲取當前日期在本週的週一 mysql
select subdate(curdate(),date_format(curdate(),'%w')-7)//獲取當前日期在本週的週日 sql
這兩句語句是mysql用來取當前日期的週一或週日的一個方法,那麼這句如何運做的呢? api
%w 是以數字的形式來表示週中的天數( 0 = Sunday, 1=Monday, . . ., 6=Saturday),0爲週日,6爲週六,跟咱們通常的認知,一週是從週一開始的並不同。 函數
date_format是一個日期轉換函數 orm
date_format(curdate(),'%w') 表示當前日期到上週週日共有幾天的間隔,即當前日期減去上週週日的日期=天數(例:curdate()爲2011-01-11,那麼上週週日爲 2011-01-09,二者相減爲2)因此若單獨輸出這一句:select date_format(curdate(),'%w') 結果就是2 form
在mysql api裏對於subdate函數是這樣解釋的: date
SELECT SUBDATE(NOW( ), 1) AS 'Yesterday', select
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'))