在 CodeIgniter 中比较日期
Posted
技术标签:
【中文标题】在 CodeIgniter 中比较日期【英文标题】:Compare dates in CodeIgniter 【发布时间】:2016-03-04 23:26:48 【问题描述】:我想在我的 CodeIgniter 模型中比较日期。在我的数据库中,日期存储为 MM/DD/YYYY。比较日期取自使用 MM/DD/YYYY 格式的日期选择器。
但我的模型查询不起作用。此处不做日期比较。
比较的格式是什么?
型号
$this->db->where('order_date >=', $first_date);
$this->db->where('order_date <=', $second_date);
【问题讨论】:
您的字段类型是什么? (例如 DATE、DATETIME、VARCHAR) 我选择 varchar size 255 使用DATE_FORMAT(curdate(), '%m/%d/%Y')
哪里..?请提供详细信息
正如@Saty 所说,请使用正确的日期格式。如果您觉得很难,您可以使用时间戳格式来订购日期。
【参考方案1】:
只需使用str_to_date
as 之类的函数
$this->db->where("order_date BETWEEN str_to_date('$first_date','%m/%d/%Y') AND str_to_date('$second_date','%m/%d/%Y')");
【讨论】:
是的..order_date
在 str_to_date(12/01/2015,'%m/%d/%Y') 和 str_to_date(12/02/2015,'%m/%d/ 之间%Y')
回显结果..bt 没有发生比较
更新我的回答日期需要用引号括起来
尝试回显查询并将其发布到您的 mysql 中并检查它是否在那里工作
我使用了这个查询【参考方案2】:
使用 STR_TO_DATE
$this->db->where("STR_TO_DATE(order_date,'%m/%d/%Y') >=",
STR_TO_DATE($first_date,'%m/%d/%Y'));
$this->db->where("STR_TO_DATE(order_date,'%m/%d/%Y') >=",
STR_TO_DATE($second_date,'%m/%d/%Y'));
【讨论】:
order_date,'%m/%d/%Y' 这里有些意想不到的% 使用这个我得到 0 而不是 DATE_FORMAT($first_date,'%m/%d/%Y')); AND DATE_FORMAT(order_date, '%m/%d/%Y') >= 0 AND DATE_FORMAT(order_date, '%m/%d/%Y') >= 0 STR_TO_date('12/01/2015','%m/%d/%Y') 或试试这个@Rose 这会转到一些错误页面【参考方案3】:用户输入
$fDate = $this->input->post("first_date"); // Input date format as mm/dd/yy
$sDate = $this->input->post("first_date"); // Input date format as mm/dd/yy
转换用户输入
$first_date = date_format($fDate,"m/d/Y"); // Output date format as mm/dd/yy
$second_date = date_format($sDate,"m/d/Y"); // Output date format as mm/dd/yy
在代码中
$this->db->where('order_date >=', $first_date);
$this->db->where('order_date <=', $second_date);
或者
$this->db->where('order_date BETWEEN '.$first_date.' and '.$second_date);
检查日期选择器格式为datepicker-popup="mm/dd/yyyy"
【讨论】:
以上是关于在 CodeIgniter 中比较日期的主要内容,如果未能解决你的问题,请参考以下文章
Codeigniter 日期比较 - 大于或小于日期时间字段不起作用