SQL データベースに、通常は 1897 年 1 月 13 日のような日付のテキスト フィールドがありますが、1962 年、2013 年 1 月、または ?1956 などの可能性があります。
年の範囲で WHERE を実行できるようにしたい。例えば。1945年から1987年まで。
すべての形式のデータに対応するのは難しい場合があることを認識しています。1972 年 2 月 13 日、1972 年 2 月、1972 年
MySQL を使用しているとします。適切な日付比較を使用してテーブルをクエリできるようにする場合は、DATETIME タイプの新しいフィールドを作成し、現在のフィールドから生成された DATETIMES を入力することができます。次のようなクエリが必要です。
UPDATE _TABLE_ set NEW_DATETIME_FIELD = STR_TO_DATE(_CURRENT_FIELD_, '%Y') where CHAR_LENGTH(_CURRENT_FIELD_) = 4;
上記のクエリは、'1945' のような _CURRENT_FILED_ の値を持つレコードに対して機能します。現在のフィールドで取得した日付文字列の種類ごとに、このクエリを実行する必要があります。
新しい DATETIME フィールドにより、MySQL日付関数を適切に使用できるようになります。
懸念している唯一の日付形式が上記のようなもので、年のみが必要な場合は、値の最後の 4 文字を使用できるように見えます。
SQL Server では次のようになります。
RIGHT(datefield,4)
または、ほとんどの言語 (SQL Server を含む) では:
SUBSTRING(datefield,LEN(datefield)-3,4)
ANSI SQL では:
MID(datefield,LEN(datefield)-3,4)