所以, 我想运行一个快速查询,以提供一些有关发送消息所用时间的信息。
我的计划是
- 计算我们发送了多少消息
- 算出消息的最大和最小日期时间之间的差异
- 算出每条消息花费了多少时间。
所以我的查询结果是
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
列以秒为单位。
关于mysql - 这个查询输出什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5533776/