MySQL:将日期时间插入其他日期时间字段

mar*_*mba 39 mysql sql datetime insert

我有一个带有DATETIME列的表.我想SELECT这个日期时间值并将其插入另一列.

我这样做了(注意:'2011-12-18 13:17:17'是前SELECT从DATETIME字段给我的值):

UPDATE products SET former_date=2011-12-18 13:17:17 WHERE id=1
Run Code Online (Sandbox Code Playgroud)

得到

    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
Run Code Online (Sandbox Code Playgroud)

好吧,我知道在那里放一个不带引号的字符串是错误的,但DATETIME首先只是一个字符串?我放什么?我想要的只是可靠地将现有值转移到新的日期时间字段......

编辑:

我问的原因是:我有这个特殊的定义,DATETIME,并且在某种程度上我认为它在处理日期时给了我一些安全性和其他优点.现在它似乎只是一个专门的VARCHAR,可以这么说.

感谢您的回答,这似乎确实是预期的行为.

Mik*_*kis 83

根据MySQL文档,您应该能够将该日期时间字符串用单引号('YYYY-MM-DD HH:MM:SS')括起来,它应该可以工作.看这里:日期和时间文字

因此,在您的情况下,命令应如下所示:

UPDATE products SET former_date='2011-12-18 13:17:17' WHERE id=1
Run Code Online (Sandbox Code Playgroud)


Ato*_*ell 8

尝试

    UPDATE products SET former_date=20111218131717 WHERE id=1
Run Code Online (Sandbox Code Playgroud)

或者,您可能希望查看使用STR_TO_DATE(请参阅STR_TO_DATE(str,format))函数.


GKV*_*GKV 8

对于MYSQL试试这个

INSERT INTO table1(myDatetimeField)VALUES(STR_TO_DATE('12 -01-2014 00:00:00','%m-%d-%Y%H:%i:%s');

验证-

select*from table1
output- datetime = 2014-12-01 00:00:00