【问题标题】:How to convert date format before comparison in YII?在 YII 中比较之前如何转换日期格式?
【发布时间】:2013-07-19 10:55:57
【问题描述】:

我正在使用 YII CGridView 提供的默认搜索。 我在搜索条件中有一个文本日期字段。我正在尝试将传递的日期与数据库中的日期进行比较,但它们不匹配。我需要转换存储在数据库中的日期格式,因为数据库中的日期也有时间,我需要在比较日期之前删除时间,但我想不出办法。

在默认的 Search function() 中,这是我想在比较之前转换日期的行。我已经尝试过转换,但这似乎不起作用。

$criteria->compare(date("Y-m-d", strtotime('application_date')),
date("Y-m-d", strtotime($this->application_date)),true);

感谢您的帮助!!!

【问题讨论】:

  • 您是否尝试在此声明中格式化日期
  • 是的,我试过了,但我只能格式化我通过的日期,而不是数据库中的日期。在比较之前,我需要格式化从数据库中获取的日期。
  • 为什么不把输入的日期格式化成数据库格式呢?
  • 实际上数据库基准日期有时间,在比较时我想排除时间。

标签: php yii date-conversion date-comparison


【解决方案1】:

有一种方法,你必须使用 mysql 的 Date_Format 函数,如下所示:

$criteria->compare('DATE_FORMAT(application_date,"%Y-%m-%d")',date("Y-m-d", strtotime($this->application_date)),true);

【讨论】:

  • 好答案!谢谢你。可以将比较运算符用于大于... 例如:$criteria->compare('DATE_FORMAT(application_date,"%Y-%m-%d")',date("Y-m-d", '>='.strtotime($this->application_date)),true);
【解决方案2】:

尝试将数据库中的日期格式化为如下所示的所需格式

 $criteria->compare('date1',date("d-m-Y",strtotime($this->date1),true);

【讨论】:

  • 实际上数据库基准日期有时间,在比较时我想排除时间部分。
  • 只有你把输入的日期转换成数据库输入的格式并比较
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多