![](/img/trans.png)
[英]sql query was working and now not? insert user ip address into table?
[英]SQL insert multiple NOW() working randomly
我有大約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,則服務器會收到數千個。 因此,解決該問題的手動方法不會使其完全消失。
任何可能解決此問題的幫助將不勝感激。
您正在使用日期時間值進行數學運算,這從來都不是一個好主意。 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)
請注意加法如何將您的日期/時間字符串轉換為“數字化”數字。 基本上,它是通過從字符串中刪除-
和:
來進行直接的string-> integer轉換。 這些整數然后得到塞到你的日期/時間字段,因為他們沒有日期/時間值,你得到了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)
mysql Now()函數實際上獲取執行查詢的當前日期和時間,因此您肯定會獲得不同的值,但是它將以遞增順序進行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.