Codeigniter 日期比较 - 大于或小于日期时间字段不起作用
Posted
技术标签:
【中文标题】Codeigniter 日期比较 - 大于或小于日期时间字段不起作用【英文标题】:Codeigniter Date comparison - Greater than or Less than datetime field not working 【发布时间】:2019-07-15 07:04:33 【问题描述】:我在 codeigniter 中有以下查询来查找日期时间字段超过 24 小时的任何数据。这是我的尝试...
$this->db->where('date_reg >', 'DATE_SUB(NOW(), INTERVAL 1 DAY)');
但是上面的查询不起作用!
简而言之,返回 date_reg 超过 24 小时的所有行...
我不能在 codeigniter 中使用查询!
这是date_reg
字段的格式....2019-02-19 08:00:00
我该怎么做?
【问题讨论】:
Compare two dates in Codeigniter and mysql的可能重复 不重复,我的字段是日期时间类型。这是很大的不同 你在“date_reg”中的日期格式是什么,你可以添加格式吗 这里是格式....2019-02-19 08:00:00 希望你能以echo date('Y-m-d H:i:s', strtotime('-1 day', strtotime(date('Y-m-d H:i:s'))));
的身份做到这一点?
【参考方案1】:
试试这个;
$this->db->query('SELECT * FROM your_table WHERE date_reg >= now() + INTERVAL 1 DAY;');
【讨论】:
我不能使用查询,因为我还有很多其他信息。它应该是 codeigniter 风格... 好的,试试。 $this->db->where('date_reg >=', 'NOW() + INTERVAL 1 DAY'); $this->db->where('date_reg >=', DATE_SUB(NOW(), INTERVAL 24 HOUR)'); 你能试试最后一个吗? 让我们continue this discussion in chat。【参考方案2】:试试这个:
$this->db->select('*');
$this->db->from('your_table');
$this->db->where('date_reg >=', '(NOW() + INTERVAL 1 DAY)', false);
$this->db->get();
【讨论】:
不工作,问题可能是我的 date_reg 字段类型是日期时间,这可能是问题吗? 我已经测试过了。 SELECT * FROMcustomer_entity
WHERE created_at >= (NOW() + INTERVAL 1 DAY) 它为我的客户专栏工作。
我也有日期时间,没问题你可以再做一件事让我分享
$this->db->where('DATE(date_reg)', '>=', '(NOW() + INTERVAL 1 DAY)');
这根本不起作用...第一个参数是键,第二个是值,第三个是布尔值,无论您是否要转义它(默认为true
) -看看这里codeigniter.com/user_guide/database/… 一个合适的解决方案是$this->db->where('date_reg >=', '(NOW() + INTERVAL 1 DAY)', false);
【参考方案3】:
您是否正在寻找在当前日期后 24 小时内录制的旧记录? 因为让我们以今天的日期为准。 2019-02-21.
$this->db->where('date_reg >', 'DATE_SUB(NOW(), INTERVAL 1 DAY)');
这个查询本质上是说查找大于当前日期的记录。所以它会寻找2019-02-21
和2019-02-22
之间的记录,可能返回空。
试试这个。我尽量分析问题,而不是半信半疑地回答
$this->db->where('date_reg <=', 'DATE_SUB(NOW(), INTERVAL 1 DAY)');
【讨论】:
以上是关于Codeigniter 日期比较 - 大于或小于日期时间字段不起作用的主要内容,如果未能解决你的问题,请参考以下文章
SQL - SELECT WHERE 存储在 JSON varchar 中的日期大于或小于固定日期