我的数据库和PHP代码中的日期时间有一个奇怪的问题。
Carbon::now()
目前返回2018-03-08 01:33:47
,这是正确的,这是我的计算机和我的国家/地区的时间。
我将expires_at
值设为2018-03-08 02:32:02
的记录在1小时内(或者您希望成为技术部门的59分钟)。
它没有显示在我的查询中,该查询应该选择expires_at在当前时间之前的所有记录,因此非过期记录。
虽然将日期时间设置为2018-03-09 01:32:28
,但它会显示它在23小时后到期?如果我发布任何旧版本(比如当前日期时间后14小时),它将显示为已过期?
$keys = UserAccountKey::where('user_id', Auth::user()->id)
->whereDate('expires_at', '>=', Carbon::now())
->get();
答案 0 :(得分:1)
您的查询的SQL是:
select * from `user_account_keys` where date(`expires_at`) >= '2018-03-08 01:33:47'
date('expires_at')
获取expires_at
字段的日期部分,即' 2018-03-08',显然' 2018-03-08'小于' 2018-03-08 01:33:47',所以你的查询没有得到任何结果。
只需使用where('expires_at', '>=', Carbon::now())
。