我正在处理应用程序日志的时间戳,格式为“Apr 28 09:54:46”,这是下面NEW.timestamp中值的格式。尝试使用触发器进行解析,然后按以下方式插入。
CREATE DEFINER=`xxxxx`@`%`
TRIGGER `<trigger_name>`
BEFORE
INSERT ON `<table_name>` FOR EACH ROW
SET NEW.timestamp = STR_TO_DATE('NEW.timestamp', '%d %b %Y %H:%i:%S'), NEW.Id = UUID();
这返回一个空值。如果有人能够对此有所了解,那将非常感激。
答案 0 :(得分:0)
STR_TO_DATE('NEW.timestamp', '%d %b %Y %H:%i:%S')
错了。不要引用NEW.timestamp
很抱歉,我无法发表评论,在那里你看不到反对。
使用:
STR_TO_DATE(`NEW`.`timestamp`, '%d %b %Y %H:%i:%S')
我发现了这个问题。 Mysql在触发之前检查参数。所以我添加了一个虚拟列&#39; tmp&#39; varchar(32)并使用它。
CREATE DEFINER=`root`@`%` TRIGGER myt
BEFORE INSERT ON times
FOR EACH ROW
SET NEW.ts = STR_TO_DATE(NEW.tmp, '%d %b %Y %H:%i:%S'), NEW.Id = UUID(),NEW.tmp='';
INSERT INTO times (id,tmp) VALUES (2,'28 Apr 2016 14:34:46');