2

データベースには 2 つの日付があります。

  1. 2013-08-01
  2. 2013-08-03

今日の日付が 2013-08-02 で、データベースから次に近い日付を取得したいとします。私はこのクエリを見つけましたが、翌日ではなく前のものを取得しています:

SELECT 
  * 
FROM 
  your_table 
ORDER BY 
  ABS(DATEDIFF(NOW(), `date`))
LIMIT 1

実行すると、必要な 2013-08-03 ではなく、2013-08-01 が取得されます。解決策は何ですか?

4

5 に答える 5

2
SELECT   *
FROM     your_table
WHERE    date >= CURRENT_DATE
ORDER BY date
LIMIT    1
于 2013-07-03T12:40:34.577 に答える
0

where次の日付のみを指定し、前の日付は指定しないという条件が必要です。

于 2013-07-03T13:12:38.870 に答える
0
SELECT * FROM your_table
ORDER BY 
  MIN(DATEDIFF(NOW(), `date`)) ASC
LIMIT 1

より高いものを提供します。将来の日付は-1、次に1、2、...になるため、ASCでABSなしで並べ替えますが、すべての状況に適しているかどうかはわかりません.

于 2013-07-03T12:46:29.220 に答える