如何在YII中比较日期格式之前进行转换?

3
我正在使用YII CGridView提供的默认搜索功能。在搜索条件中,我有一个文本日期字段。我试图比较传递的日期和数据库中的日期,但它们不匹配。我需要转换数据库中存储的日期格式,因为数据库中的日期也包含时间,而我需要在比较日期之前删除时间。但是我无法想出一种方法来实现这一点。
在默认的Search function()函数中,这是我想要在比较之前转换日期的行。我已经尝试过转换,但似乎没有起作用。
$criteria->compare(date("Y-m-d", strtotime('application_date')),
date("Y-m-d", strtotime($this->application_date)),true);

感谢您的帮助!!!

你尝试在这个语句中格式化日期了吗? - shanavascet
是的,我尝试过了,但我只能格式化我传递的日期,而不能格式化数据库中的日期。在比较之前,我需要格式化从数据库获取的日期。 - Anshuman Jasrotia
为什么不将输入日期格式化为数据库格式? - Dale
实际上,数据库中的日期包含时间,而在比较时我想要排除时间。 - Anshuman Jasrotia
2个回答

5
有一种方法可以实现这个功能,你需要使用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); - m50

0

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

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

实际上,数据库中的日期包含时间,而在比较时我想要排除时间部分。 - Anshuman Jasrotia
是的,你只需要将输入的日期转换为数据库条目的格式并进行比较。 - Ninad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接