gpt4 book ai didi

mysql - 这个查询输出什么?

转载 作者:行者123 更新时间:2023-11-29 02:35:36 26 4
gpt4 key购买 nike

所以,我想运行一个快速查询,以提供一些有关发送消息所用时间的信息。

我的计划是

  1. 计算我们发送了多少消息
  2. 算出消息的最大和最小日期时间之间的差异
  3. 算出每条消息花费了多少时间。

所以我的查询结果是

SELECT 
COUNT(id) AS message_sent,
TIMEDIFF(MAX(msg_sent_datetime), MIN(msg_sent_datetime)) AS total_time_taken,
COUNT(id)/TIMEDIFF(MAX(msg_sent_datetime), MIN(msg_sent_datetime)) AS time_per_message
FROM sent_txts_none_action_child
GROUP BY parent_id;

前两部分工作正常。
你遇到了第三个问题。

示例输出。

message_sent|total_time_taken|time_per_message5           |00:00:01        |5.00000000005           |00:00:00        |NULL5           |00:00:01        |5.00000000007647        |00:28:12        |2.7194167852

第三列输出什么?
我需要更改什么才能让它输出正确的值?


编辑

好的,在我收到评论中的建议更改后

message_sent|total_time_taken|time_per_message5           |00:00:01        |0.20000000005           |00:00:00        |0.00000000005           |00:00:01        |0.20000000007647        |00:28:12        |0.3677259056

这仍然不是我们想要的。
就好像您将 0.3677259056 乘以 7647 得到 2812

那么问题是什么?
MYSQL 没有将 datediff 值转换为任何逻辑值,

相反,它将它视为一个简单的数字并忽略任何非数字字符...

为什么mysql不把这个转换成秒/毫秒?

是否有我可以用来执行此操作的函数?

最佳答案

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff

TIMEDIFF() 返回一个时间值。但是,当您对其执行任何数字数学运算时,它会变成一个无用的数值(只是将时间的数字以文本形式混合)。

work out how much time it took per message.

所以你的意思是,time/message-count。除数应该是计数。

您得到的是倒数,即每单位时间 可以发送的消息,即。换句话说,您计算的是平均每秒可以发送多少条消息。

SELECT 
COUNT(id) AS message_sent,
TIMEDIFF(MAX(msg_sent_datetime), MIN(msg_sent_datetime)) AS total_time_taken,
TIME_TO_SEC(TIMEDIFF(MAX(msg_sent_datetime), MIN(msg_sent_datetime)))/COUNT(id) AS time_per_message
FROM sent_txts_none_action_child
GROUP BY parent_id;

生成的 time_per_message 列以秒为单位。

引用:TIME_TO_SEC()

关于mysql - 这个查询输出什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5533776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com