2017-03-27 117 views
1

我有一个包含两个日期的表:起始日期日期和结束日期。这两列都是字符串。当我尝试查询以获取与这些日期比较的记录时,Laravel将它们视为字符串而不是日期。Laravel 5.2比较字符串的日期?

例如,对于这个查询:

Schedule::whereDate('start_date','<=',date('m/d/Y'))->whereDate('end_date','>=',date('m/d/Y'))->get(); 

没有结果返回,这是不正确的。

有什么想法?或者任何其他方式比较字符串的日期?

谢谢。

+0

为什么列字符串工作的伟大?你必须做一个字符串比较,这可能不会有用。你将不得不在mysql或laravel中做一些令人讨厌的诡计来完成这项工作。我会看看我能否找出一个例子,但真正的解决方案是从字符串转换为日期。 – mkaatman

+0

不知道为什么他们不是创建日期时间,但这是我目前的。我希望可以有选择查询字符串作为日期。 – danboh

回答

2

你需要让这些列datetime而不是字符串:

$table->dateTime('start_date'); 
$table->dateTime('end_date'); 

而且,这是一个好主意,这些列添加到$dates阵列:

protected $dates = ['created_at', 'updated_at', 'start_date', 'end_date']; 
+0

谢谢。我会试着去理解改变这些领域为datetime因为已经有内置比较现有的字符串(这最有可能是错的) – danboh

+0

更改列日期时间的伎俩一些逻辑的影响,只是要改变这里的几个疑问那里。谢谢! – danboh