如何在可用日期找到大于等于的日期

时间:2016-05-26 06:40:58

标签: mysql date datetime

如下图所示,我想在日期范围之间的日期之间获取结果。

我已经尝试过这个查询,但它不起作用。

我想要更大的日期然后DTT_EVT_start开始表日期。

有人可以建议我如何在where子句中使用日期(而不是时间)列?

SELECT * 
FROM `dwssgv_esp_datetime` 
WHERE (DATE_FORMAT(DTT_EVT_start, '%Y-%m-%d') < '2015-05-10') 
  AND (DATE_FORMAT(DTT_EVT_end, '%Y-%m-%d') > '2015-05-10')

enter image description here

4 个答案:

答案 0 :(得分:1)

你可以避免DATE_FORMAT功能, 因为它会影响性能,如果它是一个巨大的表

你可能只是喜欢,

    SELECT 
            * 
    FROM 
            dwssgv_esp_datetime 
    WHERE 
            DTT_EVT_start <  CAST('2015-05-10 00:00:00' AS DATETIME) AND 
            DTT_EVT_end   >  CAST('2015-05-10 00:00:00' AS DATETIME)

这里,&lt; 2015-05-10&gt;是你的变量日期。

OR

    SELECT 
            * 
    FROM 
            dwssgv_esp_datetime 
    WHERE 
            DATE(DTT_EVT_start) <  CAST('2015-05-10' AS DATE) AND 
            DATE(DTT_EVT_end)   >  CAST('2015-05-10' AS DATE)

答案 1 :(得分:1)

这样的东西?

SELECT * FROM dwssgv_esp_datetime WHERE DTT_EVT_start < '2015-05-10' AND DTT_EVT_end > ''2015-05-10'

答案 2 :(得分:0)

您可以转换UNIX_TIMESTAMP格式的日期并进行比较

试试这个

$string = file_get_contents('file.json');
$json = json_decode($string, true);
$totalTime = $json['route_summary']['total_time']; // 101

答案 3 :(得分:0)

这是一个简单的解决方案:

SELECT *
FROM dwssgv_esp_datetime 
WHERE 
     CAST('2015-05-10' AS DATE)
     BETWEEN  DATE(DTT_EVT_start)
     AND DATE(DTT_EVT_end)

BETWEEN AND允许您检查某个值是否在特定范围内。通过使用它,您不必编写要比较的值两次。