0

我有mysql DB,它存储时间戳(日期+小时)。

我想使用这些数据来创建截止点,例如一周前、一个月前等...

$result = $mysqli->query("SELECT 
u.user_id,
  ( SELECT sum(r.result_value)
    FROM logos_results r
    WHERE r.user_id = u.user_id
    AND r.result_date <= '$week' ) AS rsum,
u.user_name,
u.user_pic,
u.user_logos_level
FROM users u
ORDER BY rsum DESC
LIMIT 4");

我的问题是,如何在 php 中创建周?我应该删除时间戳并使用没有时间的东西吗?这个确切的时间会大大降低查询速度吗?AND r.result_date <= '$week'这是重要的部分,语法正确吗?

4

3 回答 3

1

您是否有理由不使用 mysql 将周转换为日期或按周选择间隔的能力?

对我来说,这似乎比在 php 中实现你的一周至今逻辑更好。

检查这个问题。

SELECT sum(r.result_value)
    FROM logos_results r
    WHERE r.user_id = u.user_id
    AND r.result_date < NOW() - INTERVAL $num_of_weeks WEEK
于 2013-04-17T11:16:29.853 回答
0

您可以使用 unix 时间戳代替您的日期时间值。这些包含自 Epoch (1.1.1970) 以来的秒数,可以很容易地用于计算。

另一种方法是使用 datetime 和任一 MySQL 方法来获取日期值:

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

或在 PHP 中使用 DateTime 对象或 strtotime() 计算

http://php.net/manual/de/function.strtotime.php http://de2.php.net/manual/de/class.datetime.php

$nextweek = strtotime ( "+1 week")
于 2013-04-17T11:14:54.710 回答
0
$week = date('d-m-Y', strtotime("+1 week")); // 1 week from now
$week = date('d-m-Y', strtotime("-1 week")); // 1 week ago

$month = date('d-m-Y', strtotime("-1 month")); // 1 month ago

http://www.php.net/manual/en/function.strtotime.php

于 2013-04-17T11:15:14.317 回答