我有问题。也许这个问题很愚蠢,但是我一直在到处搜索并且没有得到想要的东西。 如果得到答案,我将立即删除我的帖子。
我有一张这样的桌子:
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天,则过期。还是还有其他想法? 我必须添加“过期日期”列吗? 谢谢
答案 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);