将日期时间更改为日期,以便在codeigniter中进行比较

时间:2015-06-22 13:27:08

标签: codeigniter date datetime date-format

我有一个带有日期时间变量的表,并且它的值很像,它们的格式为2015-06-22 22:30:00.030

如何将日期时间转换为codeigniter中的日期格式,以便我可以将其与表单中输入的日期(不包括时间)进行比较?这是我的查询,它给了我这个错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   'As Date)附近> '%2015/05/31%'和   merchant_transactions.CAST(datetime As Date)<第7行'%2'

    $search_where = "merchant_transactions.CAST(datetime As Date) > '%".$from."%' AND merchant_transactions.CAST(datetime As Date) < '%".$to."%'";

   $this->db->where($search_where);
   return $this->db->get();

2 个答案:

答案 0 :(得分:4)

另一种选择是使用SQL BETWEEN函数来比较日期,但您需要将传入日期转换为日期格式: YYYY-MM-DD

$from = date('Y-m-d', strtotime($from_date));
$to = date('Y-m-d', strtotime($to_date));
$search_where = 'CAST(merchant_transactions.datetime As Date) BETWEEN "'.$from.'" AND "'.$to.'"';

答案 1 :(得分:1)

您可以使用strtotime来解析输入。我也认为你的SQL应该稍微改变一下。

$time = '2015/05/31';
$from = strtotime($time);
$m_from = date('m', $from);
$d_from = date('d', $from);
$y_from = date('Y', $from);

$to = strtotime($time);
$m_to = date('m', $to);
$d_to = date('d', $to);
$y_to = date('Y', $to);

 $search_where = "CAST(merchant_transactions.datetime As Date) > '".$y_from."-".$m_from."-".$d_from."' AND CAST(merchant_transactions.datetime As Date) < '".$y_to."-".$m_to."-".$d_to."'";