Я работаю с базой данных, которая использует varchar(14)
в качестве типа данных datetime, а в более старых таблицах он плавно работает как тип datetime с такими функциями, как DATEDIFF()
.
Я пытался использовать этот формат для создания новой таблицы и оставаться последовательным в этом проекте, и он не работает с функциями даты и времени.Существуют ли какие-либо макросы преобразования, пользовательские типы данных или глобальные функции, которые могут ссылаться на эти старые столбцы, которые мне нужно обновить для моей новой таблицы?Где бы я искать эти?
Учитывая эти две таблицы:
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'
, которое, несмотря на правильность, мне мало помогает.