在mysql中使用varchar(14)作为datetime

1yjd4xko  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(552)

我在使用一个数据库 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' 虽然正确,但对我帮助不大。

1bqhqjot

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”。

相关问题