您好我在start_date列中捕获时间戳,我想根据日期查询数据,例如日期是星期日还是星期一那样。
例如
<?php
use Endroid\QrCode\QrCode;
$qrCode = new QrCode();
$qrCode
->setText('Life is too short to be generating QR codes')
->setSize(300)
->setPadding(10)
->setErrorCorrection('high')
->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
->setLabel('Scan the code')
->setLabelFontSize(16)
->setImageType(QrCode::IMAGE_TYPE_PNG)
;
// now we can directly output the qrcode
header('Content-Type: '.$qrCode->getContentType());
$qrCode->render();
// or create a response object
$response = new Response($qrCode->get(), 200, array('Content-Type' => $qrCode->getContentType()));
在这里,我需要从星期二下午23:00到星期日凌晨02:00获取所有记录。
答案 0 :(得分:1)
MySQL为此提供了dayofweek
function。
您可以将查询编写为:
MyModel.where('dayofweek(start_date) = ?', 1) # 1 is Sunday
获取start_date的所有模型都在星期日。
要实现您的目标,您可以在星期二查询 start_date,在星期二晚上查询start_date小时,在星期三查询 start_date ,在星期四查询 start_date 强>等等。
所以最后的查询就像:
MyModel.where('(dayofweek(start_date) = ? AND hour(start_date) > ?)
OR dayofweek(start_date) = ? OR dayofweek(start_date) = ? OR
dayofweek(start_date) = ? OR dayofweek(start_date) = ? OR
(dayofweek(start_date) = ? AND hour(start_date) > ?)'
, 3, 23, 4, 5, 6, 7, 1, 2)
您可以使用where
范围查询:
Model.where(start_date: from_date..to_date)