Php 如何检查laravel中的当前日期记录?
我试图只检查今天或当前日期的Php 如何检查laravel中的当前日期记录?,php,laravel,Php,Laravel,我试图只检查今天或当前日期的game\u id,为此我尝试按照脚本进行操作 $todayExist = Training::whereRaw("Date(created_at)=Curdate() and game_id=$game_id")->get(); if($todayExist->count() > 0 ){ $error = 1; $result = false; } 上面的查询输出
game\u id
,为此我尝试按照脚本进行操作
$todayExist = Training::whereRaw("Date(created_at)=Curdate() and game_id=$game_id")->get();
if($todayExist->count() > 0 ){
$error = 1;
$result = false;
}
上面的查询输出是
select * from `games_training` where Date(created_at)=Curdate() and game_id=6
但是对于game_id=6
有重复条目,因为它是在3小时前(迪拜时间)生成的
那么,有没有人能给我指点一下,到底是什么问题?这是错误的查询还是因为服务器时区而发生的
我只是插入记录,在服务器数据库中显示的是09:31:57
,意思是上午9:31,但我在迪拜,现在是下午1:33
有人能给我指点一下吗
非常感谢。转到
配置->app.php并更改“时区”=>“亚洲/迪拜”
。
然后
php artisan config:cache
您可以在“config->app.php”中找到时区配置,只需将'timezone'=>'UTC'更改为'timezone'=>'Asia/Dubai',
并重新启动XAMPP。当前日期对您意味着什么?因为您有mysql服务器时区、lavarel时区设置和计算机的时区设置。。。
编写时:Date(created_at)=Curdate(),Curdate()检查mysql服务器的时区。
那么你想找到的“当前日期”是什么?请记住,世界上每个用户都有自己的“当前本地日期”,而mysql数据库中存储的日期只能是固定日期(最好是UTC以提高可靠性…Laravel 5.6+用户,您可以这样做
$posts = Post::whereDate('created_at', Carbon::today())->get();
除了now()
和today()
,您还可以使用昨天()
和明天(),然后使用以下命令:
startOfDay()/endOfDay()
startOfWeek()/endOfWeek()
startOfMonth()/endOfMonth()
startOfYear()/endOfYear()
startOfDecade()/endOfDecade()
startOfCentury()/endOfCentury()
或
使用查询生成器,使用Mysql
defaultCURDATE
函数获取当天的所有记录
$records = DB::table('users')->select(DB::raw('*'))
->whereRaw('Date(created_at) = CURDATE()')->get();
dd($record);
09:31是UTC时间。检查您将获得的UTC当前时间,默认时区在laravel中为UTC。您应该在时区中使用亚洲/迪拜。您最好在DB中使用UTC,并在应用程序中进行时区转换。如果您的应用程序已在多个具有不同时区的位置启动,则您可以根据特定时区进行应用程序配置。它将帮助您管理日期和时间计算。是的,最好在应用程序中进行,而不是在数据库中。见和。