PHP:解析来自mysql的所有数据,其中id为第3和第4位

jQu*_*ast 8 mysql sql select datetime substring

我有一个mysql表,有一些奇怪的id是这样的:

??????????????????????????????????????????????????????????????????????
?   ?     id     ?   user_id   ?  hours_a  ?   hours_b   ?  hours_c  ?
??????????????????????????????????????????????????????????????????????
? 1 ? 010120149  ?     9       ?    10     ?     6       ?    23     ?
? 2 ? 0212201310 ?     10      ?    2      ?     8       ?    10     ?
? 3 ? 021220138  ?     8       ?    1      ?     4       ?     9     ?
? 4 ? 020120149  ?     9       ?    3      ?     8       ?    10     ?
??????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我正在尝试解析用户ID 9的总小时数,对于2014年1月和2014年.从表中可以看出,这是第一行和最后一行.

例如,01 01 2014 9第一行的ID是否代表DD/MM/YYYY/ID.

我希望能够找回所有时间(hours_a,hours_b&hours_c 分开)为USER_ID = 9,其中天= 01 - 31(通过所有天循环?),月= 01年= 2014.

要以这样的方式导出:

{"userid":"9","month":"01","year":"2014","total_hours_a":"13","total_hours_b":"14","total_hours_c":"33"}
Run Code Online (Sandbox Code Playgroud)

ID代表Day,Month,Year和Userid: 在此输入图像描述


目前我在做什么

目前我正在选择所有表格:

$query="SELECT * FROM `weird_table` WHERE `id` LIKE 9";
Run Code Online (Sandbox Code Playgroud)

将其打印到编码的json:

$result = mysql_query($query);
$temp = 0;
$json = array();

while ($row = mysql_fetch_array($result))
    {
    $json[$temp]['id'] = $row['id'];
    $json[$temp]['userid'] = $row['userid'];
    $json[$temp]['hours_a'] = $row['hours_a'];
    $json[$temp]['hours_b'] = $row['hours_b'];
    $json[$temp]['hours_c'] = $row['hours_c'];
    }

$temp++;
}

print json_encode($json);
mysql_close();
Run Code Online (Sandbox Code Playgroud)

然后是客户端(因为我是前端开发人员),我混合并匹配并总结并得到我想要的结果.而不是做所有这些麻烦,并给用户这么多的CPU痛苦; 我希望服务器能够完成工作并打印出我正在寻找的内容.

Sah*_*hah 4

尝试这个:

SELECT *, (hours_a + hours_b + hours_c) totalHours
FROM weird_table 
WHERE user_id = 9 AND 
      STR_TO_DATE(SUBSTRING(id, 1, 8), '%d%m%Y') BETWEEN '2014-01-01' AND '2014-01-31'
Run Code Online (Sandbox Code Playgroud)

或者

SELECT *, (hours_a + hours_b + hours_c) totalHours 
FROM weird_table 
WHERE user_id = 9 AND SUBSTRING(id, 3, 6) = '012014'
Run Code Online (Sandbox Code Playgroud)

或者

SELECT *, (hours_a + hours_b + hours_c) totalHours
FROM weird_table 
WHERE user_id = 9 AND 
      YEAR(STR_TO_DATE(SUBSTRING(id, 1, 8), '%d%m%Y')) = 2014 AND 
      MONTH(STR_TO_DATE(SUBSTRING(id, 1, 8), '%d%m%Y')) = 1
Run Code Online (Sandbox Code Playgroud)