我从客户那得到的日期和时间用的是拉拉。如何将给定的日期和时间与数据库进行比较,并将结果返回给客户?
例如,如果我从客户那里得到日期和时间,并且我想向他显示与他的日期和时间不冲突的行。
发布于 2015-03-11 07:45:17
实际上,您可以在DB查询中完成所有这些操作:
$date = '2015-03-11 06:29:56';
$alreadyBooked = DB::table('bookings')
->whereRaw('ABS(TIMESTAMPDIFF(MINUTE, datetime, ?)) <= 120', [$date])
->exists();
if($alreadyBooked){
// show error
}解释
?是$date的占位符。这些被称为绑定,主要用于获取干净的查询和防止SQL注入。
TIMESTAMPDIFF(MINUTE, ...将在分钟内返回输入日期、时间和存储在数据库字段中的时间的差异。如果该值较小或等于120 (2小时= 120分钟),则与条件匹配。
ABS将使值“无符号”。-60变成60
发布于 2015-03-11 06:26:11
在Laravel中,您可以使用碳来比较日期/时间。
示例
$start = new Carbon\Carbon('2014-01-05 12:00:00');
$end = new Carbon\Carbon('2014-01-01 12:00:00');
echo $end->diffInDays($start);也可以直接比较db中的数据。
$customer =App\Customer::first();
$start = $customer->db_date_column;
$end = new Carbon\Carbon('2014-01-01 12:00:00');
echo $end->diffInDays($start);更多信息http://carbon.nesbot.com/docs/#api-difference
更新如果您想以小时表示时间差,则可以使用此$end-diffInHours($start);。
发布于 2015-03-11 06:19:59
您可以使用以下示例:
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');在Laravel中,不要忘记添加以下内容:
use DateTime;另一个选择是您可以使用SQL,查看我的示例:
return DB::table('corporation')->join('corporation_subscription','corporation.id','=','corporation_subscription.corp_id')
->where('corporation.id','=',$id)
->where('corporation_subscription.period','>=',DB::raw('DATEDIFF(NOW(),corporation_subscription.created_at)'))
->where('corporation_subscription.status','!=', 'cancel' )
->get();这对你也有帮助:DB::raw('DATEDIFF(NOW(),corporation_subscription.created_at)'))
https://stackoverflow.com/questions/28979693
复制相似问题