テーブルに有効期限の列があります。有効期限が切れているレコードをフェッチします。私は 'ORDER BY DATE DESC'を使いましたが、降順で日付を並べるだけです。 '日付順' を使用してSQL Serverの条件に基づいて日付を並べ替え
出力
2016-10-31
2016-10-06
2016-03-10
所望の出力:
2016-10-06
2016-10-31
2016-03-10
テーブルに有効期限の列があります。有効期限が切れているレコードをフェッチします。私は 'ORDER BY DATE DESC'を使いましたが、降順で日付を並べるだけです。 '日付順' を使用してSQL Serverの条件に基づいて日付を並べ替え
出力
2016-10-31
2016-10-06
2016-03-10
所望の出力:
2016-10-06
2016-10-31
2016-03-10
はゴードンがあるほど不安な華麗な、私が見落としがあったと思います。
Declare @YourTable table (Date date)
Insert Into @YourTable values
('2016-10-14'), -- Added 10/14 +4 Days
('2016-10-31'),
('2016-10-06'),
('2016-03-10')
Select *, NDays=datediff(day, getdate(), [date])
From @YourTable
Order By abs(datediff(day, getdate(), [date]))
戻り
Date NDays
2016-10-14 4 << Record Added (Should be below 10/6)
2016-10-06 -4
2016-10-31 21
2016-03-10 -214
私が最も安全な(とはるかに少ないエレガントで)ためのロジックである何より、この
Select *, NDays=datediff(day, getdate(), [date])
From @YourTable
Order By Year(Date) Desc,Month(Date) Desc,Day(Date)
戻り
Date NDays
2016-10-06 -4
2016-10-14 4
2016-10-31 21
2016-03-10 -214
はあなたのポイントを得ました。私は違いを見る – MDP
以下の2つのSQLがあります。
1) First sort by date in descending order
2) With in each month sort the dates in ascending order of day.
(以下DATEPART関数は、DATEからDAYを計算します。)
SELECT *
FROM DATA
ORDER BY DATEPART(MONTH, date) DESC, DATEPART(DAY, date);
ようなものになるだろうと思います希望の出力? –
彼は、データを毎月の降順と日の昇順で並べ替えることを望んでいます。 – Teja
今日の日付に近いレコードを取得します。 – MDP