所以, 我想运行一个快速查询,向我提供一些有关发送消息所需时间的信息。
我的计划是
所以我的查询最终成为了
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没有将其转换为秒/毫秒?
我可以用它来做这个吗?
答案 0 :(得分:2)
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff
TIMEDIFF()返回时间值。但是,当您对其执行任何数值计算时,它将变为无用的数值(仅以文本形式混合时间中的数字)。
计算出每条消息花了多少时间。
所以你的意思是,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
列以秒为单位进行测量。