Ответ 1
В соответствии с документацией MySQL вы должны просто заключить эту строку datetime в одинарные кавычки ( "YYYY-MM-DD HH: MM: SS" ), и она должна работать. Смотри сюда: Литералы даты и времени
У меня есть таблица с столбцом DATETIME. Я хотел бы ВЫБРАТЬ это значение datetime и вставить его в другой столбец.
Я сделал это (примечание: "2011-12-18 13:17:17" - это значение, которое бывший SELECT дал мне из поля DATETIME):
UPDATE products SET former_date=2011-12-18 13:17:17 WHERE id=1
и получим
1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '13:17:17 WHERE itemid=1' at line 1
Хорошо, я понимаю, что неправильно помещать строку без кавычек, но DATETIME только строка в первую очередь? Что мне там положить? Все, что я хочу, надежно переносит существующее значение на новое поле datetime...
EDIT:
Я задаю вопрос: у меня есть это специальное определение DATETIME, и почему-то я подумал, что это дает мне некоторую безопасность и другие преимущества при обработке дат. Кажется, это просто специализированный VARCHAR, так сказать.
Спасибо за ваши ответы, похоже, это действительно намеченное поведение.
В соответствии с документацией MySQL вы должны просто заключить эту строку datetime в одинарные кавычки ( "YYYY-MM-DD HH: MM: SS" ), и она должна работать. Смотри сюда: Литералы даты и времени
Попробуйте
UPDATE products SET former_date=20111218131717 WHERE id=1
В качестве альтернативы вам может понадобиться использовать STR_TO_DATE (см. STR_TO_DATE (str, format)).
для MYSQL попробуйте это
INSERT INTO table1 (
myDatetimeField
) VALUES (STR_TO_DATE ('12 -01-2014 00:00:00 ','% m-% d-% Y% H:% i:% s ');
проверка-
выберите * из таблицы1
output- datetime = 2014-12-01 00:00:00