我正在尝试查询两个日期之间的数据库...问题是我正在查询的列包含当前格式为“01/01/2014”(dd/mm/yyyy)的日期列类型为 VARCHAR。
目前,我无法将列转换为日期类型。
基本上,当我查询表时,因为它没有设置为日期类型,所以 between 查询不会返回正确的行...
有没有其他人遇到过这个问题,我可以在查询中更改什么吗?
$this->db->where('IssueDate >=', '02/12/2013');
$this->db->where('IssueDate <=', '22/01/2014');
$query = $this->db->get('MYTABLE');
谢谢你们。
最佳答案
解决方案是使用str_to_date()
:
$this->db->where("str_to_date(IssueDate, '%d/%m/%Y') >=", "'2013-12-92'");
$this->db->where("str_to_date(IssueDate, '%d/%m/%Y') <=", "'2014-01-22'");
$
您可能无法控制数据库。但是您确实可以控制自己的常量。您应该习惯此类常量的 ISO 标准 YYYY-MM-DD —— 明确且被大多数数据库正确接受。
关于php - 类型为 VARCHAR 时的日期 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21295533/