我有大约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分散在各处,不应该发生。
我尝试了以下哪些对我不起作用:
我可以插入时间戳的插入,但实际上,服务器将接收成千上万的这样的"插入"或者"更新"请求输入为NOW()或CURRENT_TIMESTAMP的一天。因此,解决这个问题的手动方式不会让它完全消失。
非常感谢任何有助于解决此问题的帮助。
答案 0 :(得分:5)
您正在使用日期时间值进行数学运算,这绝不是一个好主意。 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)
答案 1 :(得分:0)
mysql Now()函数实际上获取了执行查询的当前日期和时间,因此您必须获得不同的值,但它将采用递增顺序