我有以下查詢。PHP和MySQL之間的星期差異
SELECT COUNT(*), WEEK(date), YEAR(date) FROM myTable GROUP ON YEAR(date), WEEK(date)
說這將產生以下結果
32 33 2012
43 34 2012
39 35 2012
17 36 2012
我現在想獲得的所有39條記錄一週的2012年35我不知道,但希望使用WEEK(date)=35 AND YEAR(date)=2012
在我的WHERE子句,因爲它不利用指標。相反,我希望找到邊界和使用條件。由於可能會發生舍入錯誤,因此我也不想使用BETWEEN。
因此,我嘗試以下想法一切都很好,但沒有得到39條記錄。很明顯,MySQL和PHP的處理與數週不同。我發現MySQL WEEK()利用了模式0,2,4和6,這些模式都返回了從星期天開始的一週。理想情況下,我會擁有最常用的人,最重要的是它與DateTime提供的一樣。我會怎麼做?謝謝
$w=35;$y=2012; //Given
$w=sprintf('%02d',$w); //Make sure it is two digits
$date = new DateTime($y.'W'.$w);
$d1=$date->format('Y-m-d');
$date->add(new DateInterval('P1W'));
$d2=$date->format('Y-m-d');
$sql='SELECT * FROM myTable WHERE date >= ? AND date < ?';
Mysql的處理differntly基礎上給它傳遞模式的一週計,[見周(日期模式)](http://dev.mysql.com/doc/ refman/5.5/en/date-and-time-functions.html#function_week),你也可以在系統變量中設置這個服務器範圍。 – fiz
你是否少於39條記錄?也許你的WHERE條件應該是'date <=?'。 – BellevueBob
@fiz我看過WEEK()有不同的模式,但不知道這將如何幫助。 – user1032531