我有以下查询。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