mysql - 这个查询输出什么?

标签 mysql datetime

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

我的计划是

  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_message
5           |00:00:01        |5.0000000000
5           |00:00:00        |NULL
5           |00:00:01        |5.0000000000
7647        |00:28:12        |2.7194167852

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


编辑

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

message_sent|total_time_taken|time_per_message
5           |00:00:01        |0.2000000000
5           |00:00:00        |0.0000000000
5           |00:00:01        |0.2000000000
7647        |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/

相关文章:

mysql - 如果没有my.cnf,mysql 用什么?

.net - .NET 有时区变化的历史吗?

scala - 如何在scala中获取没有时间的当前日期

mysql - 通过另一列的数据更新一列的特定部分

mysql - SQL 计数查询的性能改进

mysql - 为什么MySql报 "Subquery returns more than 1 row"错误?

Java:从数据库到毫秒的日期/时间,小时消失

c# - 使用 Json.Net 反序列化时支持多种自定义 DateTime 格式

java - 为什么在这些情况下 JVM 的默认时区不同

mysql - 通过 Node JS 连接到 AWS MySQL 数据库