计算本周 - 周一 - 周日的mysql记录

时间:2013-05-26 18:08:11

标签: php mysql

我目前正试图根据unix时间戳计算/打印出本周(mon-sun)数据库中有多少条记录。

我已经接受了以下操作,但似乎只为我打印出0(所以有些事情不对)

$sql = "
SELECT count(*) as totalWeek
FROM vote WHERE
WEEKOFYEAR(vote_time)=WEEKOFYEAR(CURDATE())";

$res = mysql_query($sql) or die( mysql_error());
$countWeek = mysql_result($res, 0);

echo $countWeek;

3 个答案:

答案 0 :(得分:2)

如果您的vote_time采用unix时间格式(自1970年以来的秒数),则必须首先进行翻译:

mysql> select WEEKOFYEAR(from_unixtime(unix_timestamp()));
+---------------------------------------------+
| WEEKOFYEAR(from_unixtime(unix_timestamp())) |
+---------------------------------------------+
|                                          21 |
+---------------------------------------------+

注意那里的from_unixtime电话

答案 1 :(得分:2)

如果您的vote_time列是时间戳,则可能需要将其转换为日期。此外,我认为您还应该修改您的条件以检查当前年份(除非您的数据不会跨越日历年)。所以,试试这个:

SELECT count(*) as totalWeek
FROM vote 
WHERE WEEKOFYEAR(DATE(vote_time)) = WEEKOFYEAR(CURDATE())
  AND       YEAR(DATE(vote_time)) =       YEAR(CURDATE())

答案 2 :(得分:2)

您可以在查询中使用php strtotime函数来获取这两个日期之间的所有记录:

$start = date( 'Y-m-d H:i:s', strtotime("last Monday") );
$end = date( 'Y-m-d H:i:s' );

$sql= "SELECT count(*) as totalWeek FROM vote WHERE (vote_time BETWEEN '$start' AND '$end')";