我想将美式日期插入表中。
INSERT INTO mytable BeginDateTime, EndDateTime VALUES ('6/21/1999 9:00 AM', '3/3/2003 3:00 PM')
我尝试过创建触发器:
CREATE TRIGGER `us2isodate` BEFORE INSERT ON `mytable`
FOR EACH ROW BEGIN
SET NEW.BeginDateTime = STR_TO_DATE(NEW.BeginDateTime, '%m/%e/%Y %r');
SET NEW.EndDateTime = STR_TO_DATE(NEW.EndDateTime, '%m/%e/%Y %r');
END
这似乎不起作用,因为我认为日期在传递给STR_TO_DATE函数之前已经被评估为NULL。是否可以使用触发器处理此问题,或者是否需要在insert语句中或之前正确格式化日期。
答案 0 :(得分:0)
如果数据来自CSV文件,则不需要触发器。它也不适用于触发器。
使用LOAD DATA INFILE
命令插入数据:
LOAD DATA LOCAL INFILE "/path/to/file.csv"
INTO TABLE your_table
FIELDS TERMINATED BY "whatever"
(col1,@my_date)
SET your_datetime_column = STR_TO_DATE(@my_date, '%m/%e/%Y %r');