使用触发器插入mm / dd / yyyy日期时间值

时间:2014-07-28 14:44:53

标签: mysql

我想将美式日期插入表中。

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语句中或之前正确格式化日期。

1 个答案:

答案 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');