6

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');

問題は、現在の日付に最も近い日付を持つ人を選択したいということです。「CURDATE()」を使用してきましたが、動作しないようです。正しい方向に私を助けることができる人はいますか?

ありがとう。

4

5 に答える 5

6

datediff を使用します。2 つの日付の差を返します。ただし、データベースには今日より前または後の日付を含めることができます。そのため、最小値が最初に選択されますが、0 に最も近い値が必要です。つまり、3 の日付差は -250 よりも「大きい」ですが、3 日間の休日は近いです。そのため、絶対値を使用します。

SELECT t1.date, t1.personssn 
  FROM Table1 AS t1
 ORDER BY ABS(DATEDIFF(t1.date, NOW())) ASC
 LIMIT 5
于 2013-05-06T12:35:02.633 に答える