MYSQL:如何按周记录小时数
我知道在这个话题上也有类似的问题,但我似乎无法得到我需要的正确结果 我有一张叫“时间”的桌子 在该表中,有属性TimeId、TimeAmount、TimeDate和FK_TaskId 我需要一个查询,按周计算时间金额(从周一开始,到周日结束) 以下是表中的一些数据:MYSQL:如何按周记录小时数,mysql,sql,Mysql,Sql,我知道在这个话题上也有类似的问题,但我似乎无法得到我需要的正确结果 我有一张叫“时间”的桌子 在该表中,有属性TimeId、TimeAmount、TimeDate和FK_TaskId 我需要一个查询,按周计算时间金额(从周一开始,到周日结束) 以下是表中的一些数据: TaskID TimeAmount TimeDate TaskId 1 250 8/16/2015 1 2 234 8/17/2015 2 3 3
TaskID TimeAmount TimeDate TaskId
1 250 8/16/2015 1
2 234 8/17/2015 2
3 356 8/15/2015 3
4 345 8/16/2015 3
我的查询只显示空值:
SELECT TimeDate as "Week", SUM(TimeAmount) AS "Total Time"
FROM time
WHERE YEARWEEK(TimeDate) = YEARWEEK(CURDATE());
提前谢谢你的帮助,我非常感谢。我想你能做到
SELECT
YEARWEEK(STR_TO_DATE(TimeDate, '%m/%d/%Y')) as Week,
SUM(TimeAmount) AS "Total Time"
FROM time
GROUP BY 1
更新
如果将TimeDate作为日期列,则可以执行以下操作
SELECT
YEARWEEK(TimeDate) as Week,
SUM(TimeAmount) AS "Total Time"
FROM time
GROUP BY 1
什么数据类型是TimeAmount
?varchar不是用于日期的好数据类型吗?另外,如果我只想对当前一周的时间求和怎么办?这样行吗?不,VARCAHR是一种不适合存储日期的数据类型。在您的情况下,每个值需要10个字节。如果您将coltype转换为DATE
,则每个值需要3个字节,并且您可以使用MySQL日期函数,而无需通过STR_将值转换为_DATE…但是在转换过程中要小心:MySQL默认日期格式为yyyy-MM ddI只需将数据类型更改为DATE。我还没有太多的数据,所以这没什么大不了的。如果数据类型是DATE而不是VARCHAR,您可以更改您的答案吗