Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL:如何按周记录小时数_Mysql_Sql - Fatal编程技术网

MYSQL:如何按周记录小时数

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

我知道在这个话题上也有类似的问题,但我似乎无法得到我需要的正确结果

我有一张叫“时间”的桌子

在该表中,有属性TimeId、TimeAmount、TimeDate和FK_TaskId

我需要一个查询,按周计算时间金额(从周一开始,到周日结束)

以下是表中的一些数据:

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,您可以更改您的答案吗