我尝试多重播放time
类型的字段。有时它有效,有时它不起作用。这是在MySQL的phpmyadmin中。
我已经尝试过的事情:
我试过googling&sql multiplying time type返回00:00:00' 但是对于那些或类似的搜索没有运气。
我运行了一个python脚本,它拉了所有这些时间并将它们相乘 到了6点和11点,所有人都工作了 - 没有00:00:00。
我也试过连续单独做,但它没有用 对于相同的。
以下是我运行此查询之前和之后的图片:
UPDATE journeys, travel_type
SET journeys.jo_duration = journeys.jo_duration * travel_type.tt_duration_multiplier
WHERE journeys.jo_type = travel_type.tt_id
我没有错误。
一些可能有用的信息:
Type 1 means 11
- 所以我希望jo_duration中的值乘以11. Type 3 means 6
(相同的原则)。 2表示1(所以没有任何变化)。
此表中有更多行存在此问题,但我不想截图整个表格。我认为这应该足够了。总共有70行。当我运行上述查询时,它会说“受影响的47行”#39; (当我认为技术上所有行都应该受到影响时?)。我不确定剩下的是否会受到影响,因为他们会输入2或者他们是否被转为00:00:00(或两者)?
如果您需要更多信息,请随时提问!
如下所示,行jo_id; 1, 3, 4, 6 are 00:00:00
。但其他人正确地成倍增加?
有谁知道这是为什么?我怎么能阻止它?
对不起,很长的帖子,我希望我的问题有道理! 谢谢!
答案 0 :(得分:0)
您无法直接将数字乘以时间数据类型。
使用函数time_to_sec和sec_to_time:
update journeys, travel_type
set journeys.jo_duration = sec_to_time(
time_to_sec(journeys.jo_duration)
* travel_type.tt_duration_multiplier
mod 86400)
where journeys.jo_type = travel_type.tt_id
如果时间超过一天, mod 86400
可以删除日期部分