现在我希望每个工作日(星期一,...,星期日)的某个siteid对于每天的tsegment-TIME(独立日期)平均类别。
我必须从tstamp或tsegment解析日期。基本上工作。 然后我必须解析时间 - 这是行不通的。不知道为什么。 我猜测是因为平日的小组。但我不知道如何解决它。
这是我的疑问:
SELECT
siteid,
DAYNAME(STR_TO_DATE(tstamp, "%Y-%m-%d")) as Day,
STR_TO_DATE(tsegment,'%h:%i:%s') as Segment,
AVG(category)
FROM `ITODDB_Occupancy`
WHERE siteid = 350
GROUP BY
Segment, Day

结果是
我想要这样的输出:
siteid Day Segment AVG(Category)
350 Monday 11:10:00 3.987
350 Monday 11:15:00 2.123
350 Tuesday 08:00:00 3.999
350 Tuesday 09:35:00 2.500
... ... ... ...
350 Sunday 03:45:00 1.432
350 Sunday 03:55:00 1.555

答案 0 :(得分:0)
从我看过和使用的内容来看,TIMESTAMP
类型可能会因STR_TO_DATE
而有点不稳定。相反,请使用FROM_UNIXTIME
/ DATE_FORMAT
DATE_FORMAT(FROM_UNIXTIME('2016-01-20T11:30:20'), '%h:%i:%s')
这应该可以满足您的需求。
示例:强>
SELECT
siteid,
DAYNAME(STR_TO_DATE(tstamp, "%Y-%m-%d")) as Day,
DATE_FORMAT(FROM_UNIXTIME(tsegment), '%h:%i:%s') as Segment,
AVG(category)
FROM `ITODDB_Occupancy`
WHERE siteid = 350
GROUP BY
Segment, Day