よくわかりませんTxtToMy
が、使用する必要があり、上記で提案したdidiercのようなソリューションを実装できない場合は、生の日付をインポートして使用するためのVARCHAR列を追加するオプションがあります。 「実際の」日付列を更新するトリガー。
テーブルの名前がMOVIES
...
ALTER TABLE MOVIES ADD (RawDateFromIMDB VARCHAR(10));
次に、定義を変更して、の代わりにTxtToMy
にインポートします。RawDateFromIMDB
release_date
このトリガーは生の日付を取得し、それを使用してrelease_date
列を更新します。
CREATE TRIGGER Movie_RawDateParse
BEFORE INSERT ON Movies
FOR EACH ROW
BEGIN
SET NEW.release_date = str_to_date(NEW.RawDateFromIMDB, '%Y-%m-%d');
END;
MySQLは、「1983-05-00」のような日付を持っていることを完全に喜んでいるようです。そのため、値1983-05
をに「インポート」したときに、これはうまくいきましRawDateFromIMDB
た。以下に示すように、「通常の」日付でも機能しました。
mysql> INSERT INTO Movies (RawDateFromIMDB) values ('1983-05');
Query OK, 1 row affected (0.03 sec)
mysql> INSERT INTO Movies (RawDateFromIMDB) values ('1983-06-22');
Query OK, 1 row affected (0.04 sec)
mysql> SELECT release_date, RawDateFromIMDB FROM Movies;
+--------------+-----------------+
| release_date | RawDateFromIMDB |
+--------------+-----------------+
| 1983-05-00 | 1983-05 |
| 1983-06-22 | 1983-06-22 |
+--------------+-----------------+
2 rows in set (0.00 sec)