我目前正试图根据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;
答案 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')";