如何在PHP中获取“专栏+ 7天”> =现在的位置

时间:2019-03-29 03:02:13

标签: php sql

我有问题。也许这个问题很愚蠢,但是我一直在到处搜索并且没有得到想要的东西。 如果得到答案,我将立即删除我的帖子。

我有一张这样的桌子:

 ID |     Title  |   Date 
-----------------------------
  1 |     AAA    | 2019-03-25
  2 |     BBB    | 2019-03-21
  3 |     CCC    | 2019-03-23

我已经尝试过了:

function get_all() {
    $plusdays = strtotime('+7 day');
    $now = date('Y-m-d H:i:s');
    $this->datatables->select('*');
    $this->datatables->from('atable');
    $this->datatables->where('crt_date + INTERVAL 7 day >=', $now);
    return $this->datatables->generate();
}

我如何显示这样的表:

 ID |     Title  |   Date 
-----------------------------
  2 |     BBB    | 2019-03-21

因此,我想显示在特定日期创建的数据,如果创建后超过7天,则过期。还是还有其他想法? 我必须添加“过期日期”列吗? 谢谢

3 个答案:

答案 0 :(得分:0)

这是一个应该起作用的SQL查询(不,它不一定是最优雅的):

SELECT *
FROM atable
WHERE (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(date)) >= (60 * 60 * 24 * 7);

我想您可以将其适当地转换为您的PHP代码。基本上,我得到now()与存储日期之间的秒数差异,然后查看差异是否大于或等于7天。

答案 1 :(得分:0)

我决定在exp_date再增加一列,以方便将来使用。 像这样的代码:

$date = time();
$date_exp = date('Y-m-d H:i:s', strtotime('+7 day', $date));

谢谢大家!

答案 2 :(得分:0)

  

提示不要在列(性能问题)中使用函数或eval

在这种情况下,您必须在7天前减去$ now和

$this->datatables->where('crt_date >=', $theDateBefore7Day);