我想从Laravel的数据库中检索今天的数据。
我已经在谷歌上搜索并应用了几种方法,但没有得到我的答案。
PrescriptionTbl::whereDate('created_at', '=', $today)->get();
其中PrescriptionTbl
是模型,today
是当前日期,类似于2019-2-19
。但得到NULL数组。
为了检查SQL,我使用了toSQL()
而不是get()
......它在浏览器中显示在SQL下面
select * from `prescription_tbls` where date(`created_at`) = ?
我还使用了Carbon
,但也得到了一个NULL数组
PrescriptionTbl::whereDate('created_at', Carbon::today())->get();
如何解决?有谁帮忙吗?
7条答案
按热度按时间x4shl7ld1#
你可以用它
oyjwcjzk2#
可以通过
new DateTime()
类获取wh6knrhe3#
使用碳(使用碳\碳;)简单又漂亮
ss2ws0br4#
你可以试试这个:
byqmnocz5#
created_at是一个时间戳,它是日期/时间格式,所以,除非你提供了整个时间戳,否则等号运算符将不起作用。
您可以使用whereDate方法来比较日期,仅如文档中所述
vzgqcmou6#
您可以使用
whereBetween
,其中您可以提供今天的开始日期为2019-01-01 00:00:00
,结束日期为2019-01-01 23:59:59
供参考How to query between two dates using Laravel and Eloquent ORM?
w6lpcovy7#
另一种获取今天交易的确切记录的方法是使用
like
操作符与Carbon结合使用,例如在Laravel 9+中:上面的代码将返回今天的记录数组。
现在我们为什么要使用这种方法呢?我想让你好好看看created_at列字段,它看起来是这样的:
2023-04-14 11:33:23
。使用where语句,结果将是一个空数组为什么?因为where语句默认使用=
运算符,这意味着sql语句将尝试完全匹配记录。查询如下所示:看看上面的查询,sql查询不可能计算出任何结果,但是使用
like
运算符,sql查询将尝试搜索其中包含今天日期的记录:2023-04-14
,它将返回今天的所有记录。如果你想从一个范围内检索记录,比如从周一到周五,你可以使用LaravelwhereBetween()
方法,否则试试这种方法。希望这能帮助你解决这个问题。您也可以查看this article以了解更多信息