【问题标题】:When using the SUM() function, how does MySQL add times?使用 SUM() 函数时,MySQL 是如何加倍的?
【发布时间】:2015-05-08 04:01:16
【问题描述】:

在我的数据库中,我有一个名为 flighttime 的字段。它包含飞行的持续时间,即:1:31、0:45、0:29。当我使用 MySQL 的 SUM() 函数来添加这些时间时,它给了我一个奇怪的数字,XXXXX。它不像人们期望的那样采用 XX:XX 的时间格式。

有人知道 MySQL 是如何加倍的吗?如果是这样,我如何将它给我的数字转换为 XX:XX 之类的格式?

谢谢!

【问题讨论】:

  • 您使用什么列类型来存储飞行持续时间?
  • 我使用的是时间数据类型。
  • 好吧,那就看看这个:stackoverflow.com/questions/10067939/…
  • 我同意,你应该把它存储为一个整数,特别是如果你想在sql中求和。
  • 添加时间没有任何意义,除非它们是相对的。

标签: mysql


【解决方案1】:

如果你想在mysql中添加时间,你应该在mysql中使用ADDTIME()函数而不是SUM()函数。

mysql> SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');
    -> '2008-01-02 01:01:01.000001'
mysql> SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');
    -> '03:00:01.999997'

synatx 是ADDTIME(expr1,expr2) 所以你不能加三倍。

【讨论】:

  • select now(), addtime(now(), concat('1:35', ':00')); 将添加 1:35。 fiddle
  • 当然有解决方法可以将多次添加在一起。我说的语法你不能多次添加
  • 我收到错误消息“使用此函数调用本机函数“ADDTIME”时参数计数不正确。
  • 你能显示你的代码吗?我认为你在函数中加了三次。您只能添加两个。参数计数应该是两个。
  • 哦,我现在明白了。我正在尝试将一整列时间加在一起。不只是三四个。
猜你喜欢
  • 2012-07-07
  • 2011-08-06
  • 2023-04-08
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多