15

日と時刻を保持するテーブルがあります。日列には、7日間のいずれかを入力でき、データ型に設定されていますvarchar。このテーブルにはクライアントの予約時間が含まれているため、IDが一致するテーブルからすべての日を選択し、月曜日から日曜日の日で並べ替えます。このクエリに何かを追加して、結果が返される順序を手動で選択できることを期待していました。

select * 
from requirements 
where Family_ID = 1 
ORDER BY Day, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday

もちろんこれはうまくいきませんが、私が達成しようとしていることを示したかっただけです。クライアントは必ずしも毎日助けを必要としません、私は彼らが予約されている日を示したいだけです。

DESCとASCで並べ替えても、曜日は役に立ちません。これを実現するためのヒントをいただければ幸いです。

ありがとう。

4

2 に答える 2

38

うーん..それは厄介です、日は逐語的に「月曜日」、「火曜日」などとして保存されますか?

とにかく、これを行うだけです:

SELECT * 
FROM Requirements
ORDER BY 
     CASE Day 
     WHEN 'Monday' THEN 1
     WHEN 'Tuesday' THEN 2
     WHEN 'Wednesday' THEN 3
     WHEN 'Thursday' THEN 4
     WHEN 'Friday' THEN 5
     WHEN 'Saturday' THEN 6
     WHEN 'Sunday' THEN 7
     END
于 2012-04-18T11:12:05.427 に答える
1

保存する理由がない私見Monday, Tuesday, etc...日付または日時の値を保存するとDATENAME、クエリで使用するか、次の機能を使用して、必要なときにクエリ時にそのデータから曜日の名前をいつでも抽出できます。プレゼンテーション層。そうすることのパフォーマンスコストは、それを個別に保存することを正当化するものではありません。また、ネイティブの日付/日時データを使用して正しく並べ替えることができるはずです。

于 2012-04-18T12:06:43.167 に答える