SQL - 查找最接近当前日期的日期

时间:2013-05-06 12:21:22

标签: mysql sql

我的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()”,但似乎无法让它工作。谁可以帮助我朝正确的方向发展?

感谢。

5 个答案:

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