SELECTing(MYSQL)时如何限制时间

时间:2013-07-21 12:19:51

标签: mysql sql datetime

我在数据库中有一个表和一个名为timedate的列,时间在此列中存储如下:2013-05-25 12:15:25

我需要在最后15分钟内SELECT行的时间;所以在上面的情况下

  

如果timedate在2013-05-25 12:00:25

之后,请选择SELECT

我试过了:

TO_DAYS(NOW()) - TO_DAYS('timedate') < 15

但它无效

SELECT 
    * 
  FROM 
    `column` 
  WHERE 
    `name` = 'name' 
    AND `family` = 'family'  
    AND (
      `test1` = 'test1 value' 
      || `test2` = 'test2 value' 
      || `test3` = 'test3 value' 
    ) 
    AND TO_DAYS(NOW()) - TO_DAYS('timedate') < 15 
  LIMIT 
    1

5 个答案:

答案 0 :(得分:1)

SELECT * FROM `column` 
WHERE `name` = {$name} 
AND `family` = {$family}  
AND (`test1` = {$test1} || `test2` = {$test2} || `test3` = {$test3}) 
AND `timedate` > NOW() - INTERVAL 15 MINUTE

重要:请注意,我使用反引号替换了'时间日期。使用' MySQL认为它是字符串,而不是列名。

答案 1 :(得分:1)

如果字段类型test1test2test3是数字,那么您的查询应为:

SELECT 
  * 
FROM
  `column` 
WHERE `name` = '{$name}' 
  AND `family` = '{$family}'
  AND (
    `test1` = {$test1} || `test2` = {$test2} || `test3` = {$test3}
  ) 
  AND ADDTIME(`timedate`, '00:15:00.000000') > NOW()

如果字段test1test2test3的类型为varchar,则您的查询应为:

SELECT 
  * 
FROM
  `column` 
WHERE `name` = '{$name}' 
  AND `family` = '{$family}'
  AND (
    `test1` = '{$test1}' || `test2` = '{$test2}' || `test3` = '{$test3}'
  ) 
  AND ADDTIME(`timedate`, '00:15:00.000000') > NOW()

希望这有帮助。

答案 2 :(得分:0)

请参阅this page

您可以使用DATE_SUB(CURDATE(), INTERVAL 15:00 MINUTE_SECOND)获取15分钟前的时间,然后将日期与>运算符进行比较。

答案 3 :(得分:0)

尝试TIMESTAMPDIFF (MINUTE, NOW(), timestamp)

请参阅the MySQL manual

答案 4 :(得分:0)

尝试这样的事情

SELECT TIMEDIFF(NOW(),`timedate`) < 15 FROM ......