如何获取特定日期的数据

时间:2016-11-23 12:17:03

标签: ruby-on-rails ruby date time where

您好我在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获取所有记录。

1 个答案:

答案 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)