1

我目前正在尝试根据 unix 时间戳计算/打印我的数据库中从本周(周一 - 周日)开始有多少条记录。

我已经尝试过以下操作,但似乎只是为我打印出 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;
4

3 回答 3

2

如果您使用的vote_time是 unix 时间格式(自 1970 年以来的秒数),则必须先翻译它们:

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

注意from_unixtime里面的电话

于 2013-05-26T18:22:17.840 回答
2

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

SELECT count(*) as totalWeek
FROM vote 
WHERE WEEKOFYEAR(DATE(vote_time)) = WEEKOFYEAR(CURDATE())
  AND       YEAR(DATE(vote_time)) =       YEAR(CURDATE())
于 2013-05-26T18:28:01.890 回答
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')";
于 2013-05-26T18:28:57.233 回答