我在数据库中有一个表和一个名为timedate
的列,时间在此列中存储如下:2013-05-25 12:15:25
我需要在最后15分钟内SELECT
行的时间;所以在上面的情况下
如果timedate在
之后,请选择SELECT2013-05-25 12:00:25
我试过了:
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
答案 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)
如果字段类型test1
,test2
和test3
是数字,那么您的查询应为:
SELECT
*
FROM
`column`
WHERE `name` = '{$name}'
AND `family` = '{$family}'
AND (
`test1` = {$test1} || `test2` = {$test2} || `test3` = {$test3}
)
AND ADDTIME(`timedate`, '00:15:00.000000') > NOW()
如果字段test1
,test2
和test3
的类型为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)
答案 4 :(得分:0)
尝试这样的事情
SELECT TIMEDIFF(NOW(),`timedate`) < 15 FROM ......