我不太TxtToMy
清楚,但是如果您必须使用它,并且如果它不允许您实现像上面提出的 didierc 这样的解决方案,那么一种选择是添加一个 VARCHAR 列来导入原始日期并使用更新“真实”日期列的触发器。
假设您的表名为MOVIES
...
ALTER TABLE MOVIES ADD (RawDateFromIMDB VARCHAR(10));
然后将您的TxtToMy
定义更改为 import intoRawDateFromIMDB
而不是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)