我有大约40行以下声明
INSERT INTO `maindb`.`table` (`a_id`, `b_id`, `c_id`, `time_1`, `time_2`, `time_3`, `time_4`, `p`) VALUES (NULL, '1',3, NOW()+3907, NOW()+4192, NOW()+4291, NOW()+7945, '1');在我执行完它们之后,实际存储在MySQL表中的内容是

多个万-00- 00:00:00散落在各处,这不应该发生。
我尝试了以下对我无效的方法:
我可以给出插入时间戳的空间,但实际上,服务器每天将收到成千上万个这样的“插入”或“更新”请求,输入是NOW()或CURRENT_TIMESTAMP。因此,手工解决这个问题的方法不会使它完全消失。
任何有可能解决这个问题的帮助都将不胜感激。
发布于 2015-01-13 14:41:52
你在用日期时间值做数学,这从来不是个好主意。timevalue + integer将给出一个整数结果:
mysql> select now(), now()+4291;
+---------------------+-----------------------+
| now() | now()+4291 |
+---------------------+-----------------------+
| 2015-01-13 08:40:18 | 20150113088309.000000 |
+---------------------+-----------------------+
1 row in set (0.00 sec)注意添加如何将日期/时间字符串转换为“数字化”数字。基本上,它是通过从字符串中提取-和:来进行直接的字符串->整数转换。然后,这些整数被填充到您的日期/时间字段中,并且由于它们是而不是日期/时间值,所以您将得到0000-00-00错误日期。
如果你想用日期和时间做“数学”,你必须使用适当的工具:
mysql> select now(), now() + interval 4291 second;
+---------------------+------------------------------+
| now() | now() + interval 4291 second |
+---------------------+------------------------------+
| 2015-01-13 08:41:21 | 2015-01-13 09:52:52 |
+---------------------+------------------------------+
1 row in set (0.00 sec)发布于 2015-01-13 14:42:28
mysql Now()函数实际上获取执行查询的当前日期和时间,因此您将得到不同的值,但它将是递增的。
https://stackoverflow.com/questions/27924619
复制相似问题