Codeigniter 日期比较 - 模型内不到 24 小时

问题描述 投票:0回答:1

我在 CodeIgniter 中进行以下查询,以查找 date_created 字段小于 24 小时的任何数据。这是我在模型中的代码

public function checkDeposit($preOrder) 
    {
        return $this->db->table('deposit')
        ->where('preorder_code', $preOrder)
        ->where('status', 0)
        ->where('date_created <', strtotime(date('YmdHis'), INTERVAL 1 DAY))
        ->get()
        ->getRowArray();
    }

但是上面的查询不起作用。

简而言之,我想要的是,返回 date_created 小于 24 小时的所有行...

这是我的 date_created 格式

创建日期格式

如何在 Models 中获取 24 小时以内的数据?

php datetime codeigniter-4
1个回答
0
投票

有几种方法可以做到这一点:

->where('filters.created_at >', \CodeIgniter\I18n\Time::now()->subDays(1)->getTimestamp())
->where(new CodeIgniter\Database\RawSql('filters.created_at > UNIX_TIMESTAMP(NOW() - INTERVAL 1 DAY)'))
->where(new CodeIgniter\Database\RawSql('filters.created_at > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))'))
->where('filters.created_at >', strtotime('-1 day'))
->where('filters.created_at >', (new \DateTimeImmutable())->modify('-1 day')->getTimestamp())
->where('filters.created_at >', (new \DateTimeImmutable())->sub(new \DateInterval('P1D'))->getTimestamp())
->where('filters.created_at >', date_timestamp_get(date_create('-1 day')))

选择其中一个

  1. 第一个使用 CodeIgniter Time 类(我更喜欢这个,因为它是内置 PHP 内容之上的一个很好的抽象层)。
  2. 第二个和第三个使用MySQL间隔函数
  3. 其他使用内置 PHP 函数,例如:strtotimeDateTimeImmutable
© www.soinside.com 2019 - 2024. All rights reserved.