【问题标题】:MySQL - SUM DateTime?MySQL - 总和日期时间?
【发布时间】:2017-03-20 07:29:25
【问题描述】:

我需要 sum datetime 值,但我不知道该怎么做。

我有桌子:

我的查询:

SELECT 
    SUM(h.dtplay) AS Time 
FROM 
    tblhistory AS h, 
    tblgame AS g 
WHERE 
    h.idgame = g.id AND 
    g.description = gameName;

但是,当我运行该查询时,我的结果是:

为什么不正确?

编辑

我将表格中的日期时间格式更改为时间:

所以,我需要对时间值求和。

编辑 2

正确的查询:

SELECT 
   SEC_TO_TIME(SUM(TIME_TO_SEC(h.DtPlay))) AS Time 
FROM 
   tblhistory AS h, 
   tblgame AS g 
WHERE 
   h.idgame = g.id AND 
   g.description = gameName;

感谢@Newbee Dev 和@EhsanT :)

【问题讨论】:

  • 您是否尝试过使用TIME 数据类型?
  • @PraveenKumar 我测试过,不再工作。查询将所有数字相加,如整数并忽略时间格式 =/
  • 您可能需要先格式化时间值,然后才能执行我认为的任何操作。
  • @PraveenKumar 但在我的表格中,值已经采用时间格式
  • 你试过SEC_TO_TIMETIME_TO_SEC吗?

标签: mysql datetime


【解决方案1】:

首先:将您的日期时间格式化为时间

Date_format(DtPlay, '%h:%i:%s')

然后将其转换为只需几秒钟

Time_to_sec(Date_format(DtPlay, '%h:%i:%s')

转换后你现在可以对它们求和

Sum(Time_to_sec(Date_format(DtPlay, '%h:%i:%s'))

最后结果现在准备好了,只需将其格式返回为时间格式

SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( DtPlay ) ) ) FROM tblhistory

Sample Result

【讨论】:

  • 我在删除 DATE_FORMAT 后测试并正常工作,谢谢
  • @JoseFelipeBlumdeAraujo 你能把它标记为答案吗 :)
  • @JoseFelipeBlumdeAraujo 啊,所以它仍然可以工作而无需将其转换为 date_format
【解决方案2】:

您能否提供更多有关您正在尝试做的事情的信息。因为我想不出你想要总结年份的场景。 你得到的结果对我来说似乎是正确的,因为你可以将它分成秒、分钟、小时、天、月和年。

【讨论】:

  • 这是作为答案发布的,但它不会尝试回答问题。它可能应该是编辑、评论、另一个问题或完全删除。
  • 我是说结果是正确的,所以实际上它是一个答案
  • 这不是答案,如果您需要与 OP 沟通并提出问题以澄清问题,请使用评论部分而不是发布答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
相关资源
最近更新 更多