問題:
私のテーブルのいくつかのフィールドは、日付の形式が正しくありません。C# の .ToString() メソッドを使用してフォーマットされていますが、タイプミスをして次のように入力しました: MM/dd/yyyy hh:mm/ss tt
さて、よく見ると MM/dd/yyyy hh:mm ----> ' / ' <--- ss
これは ' : 'であると想定されます
次に、C#コードで修正する前に(値の一部がフォーマットされていることを意味します:MM/dd/yyyy hh:mm:ss tt)
問題は、テーブルから日付順に値を選択しようとしていることです (「Datefieldnamehere」でソートすることはできません)。これは、一部のフィールドが「/」で間違った形式になっているためです。
私が試したこと:
さて、時間は常に同じ場所にあるので(それが私にとって重要なことです)、時間内の数字の部分文字列を取り、それらを並べ替えることができると考えました。最初に午前、次に午後
区切り文字に関係なくすべての日付は常に M/ dd/yyyy hh/mm/ss tt
だから私は試しました:
(
SELECT SN, StatusCode, Time, Mid(Time,14,2) + ':'+ Mid(Time,17,2) AS TTI
FROM OrderStatus
WHERE StatusCode = 'Finished' and Left(Time,10) = '4/20/2012'
AND Time LIKE '*AM'
ORDER BY Val(Mid([Time],11,2)) DESC
)
UNION ALL (
SELECT SN, StatusCode, Time, Mid(Time,14,2) + ':'+ Mid(Time,17,2) AS TTI
FROM OrderStatus
WHERE StatusCode = 'Finished' and Left(Time,10) = '4/20/2012'
AND Time LIKE '*PM'
ORDER BY Val(Mid([Time],11,2)) DESC
);
それが時間単位で注文するかどうかを確認するだけですが、そうではありません:
ご覧のとおり、(時間フィールドで)01、02、01 に戻ります... ?
とにかく、ここに同様の質問があります。私は賞金をかけました。この質問またはその質問に答えると、賞金を獲得できます。これは、他のシナリオでも知っておくと役立ちます。
編集: 文字列の部分文字列でソートする方法について本当に答えてほしい質問。編集が遅れて申し訳ありませんが、私はこれをすでに変更したと断言できました。たとえば、任意の文字列/日付/何かを1桁で並べ替えたいとします。 EndPos))
注:その Order By は完全に間違った結果をもたらします。