PHP和MySQL獲取week值不一致的處理

2021-10-09 13:17:29 字數 977 閱讀 2379

在處理關於周資料的統計的時候,碰上乙個問題:通過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 ...