我的SQL查询遇到了一些问题。 我拿到了这张桌子:
insert into Table1 (date, personssn)
insert ('2012-01-21 12:01:33', '123456789');
insert into Table1 (date, personssn)
insert ('2012-02-22 12:01:33', '123456789');
问题是我想选择日期为CLOSEST到当前日期的人物。我一直在使用“CURDATE()”,但似乎无法让它工作。谁可以帮助我朝正确的方向发展?
感谢。
答案 0 :(得分:12)
select *
from Table1
order by
abs(now() - date) desc
limit 1
答案 1 :(得分:5)
使用datediff。它是两个日期之间的回报差异。
SELECT date,personssn FROM Table1 ORDER BY ABS( DATEDIFF(DATE, NOW() ) ) LIMIT 5
答案 2 :(得分:1)
通过以下简单的顺序尝试:
SELECT date,personssn FROM Table1 ORDER BY date desc
答案 3 :(得分:1)
类似的东西:
with myCTE as (
SELECT to_date('21-Jan-2012 12:00') as mydate, '123456789' as myId FROM DUAL UNION
Select to_date('22-Feb-2012 12:00') as mydate, '123456789' FROM DUAL )
Select abs(sysdate-mydate) as diff, mydate, myID from myCTE order by diff
但这是oracle ..我不确定mysql文本。
答案 4 :(得分:0)
使用MAX(日期),如果你只想要一行作为输出,则使用date< = sysdate 否则你将如何定义壁橱到sysdate ..