1

SQL データベースに、通常は 1897 年 1 月 13 日のような日付のテキスト フィールドがありますが、1962 年、2013 年 1 月、または ?1956 などの可能性があります。

年の範囲で WHERE を実行できるようにしたい。例えば。1945年から1987年まで。

すべての形式のデータに対応するのは難しい場合があることを認識しています。1972 年 2 月 13 日、1972 年 2 月、1972 年

4

2 に答える 2

0

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日付関数を適切に使用できるようになります。

于 2013-09-20T12:13:11.570 に答える
0

懸念している唯一の日付形式が上記のようなもので、年のみが必要な場合は、値の最後の 4 文字を使用できるように見えます。

SQL Server では次のようになります。

RIGHT(datefield,4)

または、ほとんどの言語 (SQL Server を含む) では:

SUBSTRING(datefield,LEN(datefield)-3,4)

ANSI SQL では:

MID(datefield,LEN(datefield)-3,4)
于 2013-09-20T13:06:46.260 に答える