19 Dec 2012
getdate() によって返される日付形式に変換する方法2012-12-22
。2012 年 12 月 19 日と2012年11 月19 日を比較すると、アルファベット順の比較により2012 年 11 月 19 日の方が大きい日付になるため、日付の比較にこれが必要です。
編集
私はこのテーブルのデータベース設計者ではありません。作業するテーブルが与えられました。そうでなければ、日付を格納するために varchar を使用しなかったでしょう
19 Dec 2012
getdate() によって返される日付形式に変換する方法2012-12-22
。2012 年 12 月 19 日と2012年11 月19 日を比較すると、アルファベット順の比較により2012 年 11 月 19 日の方が大きい日付になるため、日付の比較にこれが必要です。
編集
私はこのテーブルのデータベース設計者ではありません。作業するテーブルが与えられました。そうでなければ、日付を格納するために varchar を使用しなかったでしょう
両方を日付に変換します。日付値を格納するために文字列を使用しないでください! さらに良いことに、データベース スキーマを変更すると、文字列の不一致の問題は完全になくなります。
また、Getdate() は文字列を返さないことに注意してください。日時データ型で日付を返します。クライアントはそれを文字列表現に変換します。
詳細については、SQL Server Books Online の「キャストと変換」を参照してください。
Convert (datetime, stringdate1)
壊れたデータベース列を修正するには、次のようにします。
ALTER TABLE YourTable ALTER COLUMN BadStringDate datetime;
試してみてください。ただし、これは日付ではなく文字列を返します
SELECT convert(varchar, getdate(), 106)
と比較する前に、まず日付に変換する必要がありますGETDATE
。
SELECT convert(date, '19 Dec 2012', 106)
データベースを設計したのはあなたですか? はいの場合、次に設計するとき (または変更する時間があれば) 適切なデータ型を使用します。