在 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中的时间戳进行比较

CodeIgniter:将最后一个活动存储到数据库中

nginx配置CI重写规则,codeigniter

Codeigniter 日期比较 - 大于或小于日期时间字段不起作用

使用 codeigniter ci_marchant_Lib 库的 PayPal 定期付款

php/Codeigniter——如何通过排除时间来仅比较日期