我在使用一个数据库 varchar(14)
作为datetime数据类型和旧表中的数据类型,它作为datetime类型使用类似 DATEDIFF()
.
我尝试使用这种格式来创建一个新表,并在这个项目中保持一致,但它不适用于datetime函数。是否有任何转换宏、自定义数据类型或全局函数可能引用这些旧列,我需要为新表更新这些旧列?我在哪找这些?
考虑到这两张表:
CREATE TABLE `working` (
`id` varchar(30) NOT NULL DEFAULT '',
`timecomplete` varchar(14) DEFAULT NULL,
`count` int(10) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`count`),
UNIQUE KEY `unique_id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=latin1
CREATE TABLE `notWorking` (
`count` int(11) unsigned NOT NULL AUTO_INCREMENT,
`id` varchar(30) NOT NULL,
`delDate` varchar(14) DEFAULT NULL,
PRIMARY KEY (`count`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8
用我能查询的第一个 SELECT id FROM working WHERE DATEDIFF(NOW(), timecomplete) >1;
一切都很好。
在第二天, SELECT id FROM notWorking WHERE DATEDIFF(NOW(), delDate) >1;
返回警告: Incorrect datetime value: '2018040305000'
虽然正确,但对我帮助不大。
1条答案
按热度按时间1bqhqjot1#
我遇到了一个问题,varchar(14)在mysql中不能作为datetime类型工作。原来我少了一个数字。有关文件可在以下位置找到:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-literals.html
具体来说,这一行回答了我的很多问题,因为mysql支持这一点。
mysql可以识别以下格式的datetime和timestamp值:
“yyymmddhhmmss”或“yymmdhhmmss”格式的字符串,但前提是该字符串作为日期有意义。例如,“20070523091528”和“070523091528”被解释为“2007-05-23 09:15:28”,但“071122129015”是非法的(它有一个无意义的分钟部分)并成为“0000-00-00:00”。