我正在尝试创建一个触发器,将输入日期更改为unix时间戳。 当我向表插入一个值时,插入的值为NULL
CREATE TRIGGER `updateDate` BEFORE INSERT ON `tl_calendar_events`
FOR EACH
ROW SET NEW.startDate = UNIX_TIMESTAMP(STR_TO_DATE(NEW.startDate, '%d.%m.%Y'))
'startDate'的输入值类似于01.11.2013
表格定义:
CREATE TABLE IF NOT EXISTS `tl_calendar_events` (
...
`startDate` int(10) unsigned DEFAULT NULL,
...
PRIMARY KEY (`id`),
KEY `pid` (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=66 ;
答案 0 :(得分:1)
您无法将字符串插入INT列。看起来STRICT服务器模式已关闭,并且插入了默认值(... startTime int(10) unsigned DEFAULT NULL
...)。
唯一的方法是在插入这些值时更改这些值,例如 -
INSERT INTO tl_calendar_events(startDate)
VALUES (UNIX_TIMESTAMP(STR_TO_DATE('01.11.2013', '%d.%m.%Y')));
答案 1 :(得分:0)
将startDate
列的数据类型更改为varchar,然后您的上述查询将起作用。使用
`startDate` VARCHAR(10) NULL DEFAULT NULL in your table creation query
OR
您可以将数据类型更改为DATE
或DATETIME
并在程序中转换为unix时间,在这种情况下不需要该触发器