在處理關於周資料的統計的時候,碰上乙個問題:通過mysql的week函式統計出來的「週數」,比php的date(「w」,time())獲取的「週數」小1。如「2020-06-18 13:27:01」,mysql取出來的是24,而php取出來的是25,這就導致有一周的資料沒有匹配上。
頭一次碰上這個問題,於是我特意用win10角落的日曆數了一下,發現「2020-06-18 13:27:01」確實在2023年的第25周,那問題就出在mysql的week函式了。
仔細一查,發現mysql的week函式居然還有第2個引數——mode?!
week函式的兩個引數:
date是要獲取週數的日期。
mode是乙個可選引數,用於確定週數計算的邏輯。它允許您指定本週是從星期一還是星期日開始,返回的週數應在0到52之間或0到53之間。
看了這個注釋我一開始沒看懂,但看了下面這個表:
模式
一周的第一天
範圍
0星期日
0-53
1星期一
0-53
2星期日
1-53
3星期一
1-53
4星期日
0-53
5星期一
0-53
6星期日
1-53
7星期一
1-53
忽然明白了!
預設情況下,mode引數取0,也就是說,周是從星期日開始算的,再看「2020-06-18 13:27:01」,其實,它所在的這一周是 「2020-06-14」到「2020-06-20」,而不是「2020-06-15」到「2020-06-21」
這就清楚了,是計算一周的第一天不同導致的,那麼,只有將其統一,就ok了。
在mysql的week函式中加入第二個引數「1」,即 week(created_at,1),再次檢視,mysql和php所取的週數就一致了!
mysql 獲取系統資訊 PHP如何獲取系統資訊
php如何獲取系統資訊 php如何獲取系統資訊 獲取php版本 php version 獲取php安裝路徑 default include path 獲取當前檔案絕對路徑 file 獲取系統型別 php uname s 獲取php執行方式 php sapi name 獲取http請求中host值 s...
php設定和獲取cookie
setcookie mycookie value 函式原型 int setcookie string name,string value,int expire,string path,string domain,int secure 刪除cookie 1 呼叫只帶有name引數的setcookie ...
php設定和獲取cookie
setcookie mycookie value 函式原型 int setcookie string name,string value,int expire,string path,string domain,int secure 刪除cookie 1 呼叫只帶有name引數的setcookie ...