【问题标题】:How to Get Where 'Column + 7 Days' >= NOW in PHP如何在 PHP 中获取“列 + 7 天”>= NOW 的位置
【发布时间】:2019-03-29 03:02:13
【问题描述】:

我有问题。也许这个问题很愚蠢,但我一直在到处寻找,却没有得到我想要的。 如果我得到答案,我会立即删除我的帖子。

我有一张这样的桌子:

 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 天就会过期。还是有其他想法? 我必须添加过期日期列吗? 谢谢

【问题讨论】:

  • 不要在收到答案后立即删除您的问题。 StackOverflow 不是这样工作的。删除您的问题会使与您有类似(或相同!)问题的人在未来无法获得答案。
  • 您使用的是什么数据库? mysql?甲骨文? sql 服务器?
  • 好的,我不会立即删除此帖子。 @以赛亚
  • 我使用数据库mysql @catcon
  • 为什么不将 now() - 7 days 计算为单个常量表达式,并使用它而不是可能将 7 天添加到数百万个日期? date+7>=now 等价于 date>=now-7

标签: php sql


【解决方案1】:

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

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

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

【讨论】:

  • 好的,我以后试试。谢谢!
【解决方案2】:

我决定再添加一列是 exp_date 以便将来使用。 像这样的代码:

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

谢谢大家!

【讨论】:

    【解决方案3】:

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

    在这种情况下,您必须将 $now 减去 7 天,然后

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 2023-03-13
      • 2012-06-26
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多