Mysql 按时间和日期分组

Mysql 按时间和日期分组,mysql,date,time,group-by,Mysql,Date,Time,Group By,我不想在这里问一个问题,因为我知道它已经完成了(稍微),但是由于字段格式的不同,我的问题略有不同。我在加入、小时选择和其他方面做了很多尝试,但我被卡住了。我想要一个快速的手 我有一个MySQL表,如下所示: CREATE TABLE `VAT` ( `VATid` int(11) NOT NULL AUTO_INCREMENT, `VATDate` date DEFAULT NULL, `VATTime` varchar(10) DEFAULT NULL, `VATPledgeA

我不想在这里问一个问题,因为我知道它已经完成了(稍微),但是由于字段格式的不同,我的问题略有不同。我在加入、小时选择和其他方面做了很多尝试,但我被卡住了。我想要一个快速的手

我有一个MySQL表,如下所示:

CREATE TABLE `VAT` (
  `VATid` int(11) NOT NULL AUTO_INCREMENT,
  `VATDate` date DEFAULT NULL,
  `VATTime` varchar(10) DEFAULT NULL,
  `VATPledgeAmount` float DEFAULT NULL, 
  PRIMARY KEY (`VATid`),
  UNIQUE KEY `VATid_UNIQUE` (`VATid`)
) ENGINE=MyISAM AUTO_INCREMENT=6531 DEFAULT CHARSET=latin1;
问题在于,VATDate字段的日期格式为YYYY-MM-DD,而VATTime字段的日期格式为带前导零的HHMM,如下表中的一些示例数据所示

样本表数据:

VATid   | VATDate    | VATTime | VATPledgeAmount |
--------------------------------------------------
1       | 2016-06-30 | 0730    | 100             |
2       | 2016-06-30 | 0733    | 20              |
3       | 2016-06-30 | 0840    | 70              |
4       | 2016-06-30 | 0943    | 100             |
5       | 2016-06-30 | 0730    | 50              |
6       | 2016-07-01 | 2113    | 50              |
7       | 2016-07-01 | 2302    | 300             |
8       | 2016-07-02 | 0416    | 10              |
9       | 2016-07-02 | 0417    | 10              |
10      | 2016-07-02 | 0418    | 10              |
我想做的是让MySQL服务器为我做计算,这样当数据出来时,日期仍然会显示出来,但是每小时的总值会被汇总和分组

Counts | g_VATDate  | g_VATTime | Total_VATPledgeAmount |
--------------------------------------------------
2      | 2016-06-30 | 0700      | 120              |
1      | 2016-06-30 | 0800      | 70               |
1      | 2016-06-30 | 0900      | 100              |
1      | 2016-07-01 | 2100      | 50               |
1      | 2016-07-01 | 2300      | 300              |
3      | 2016-07-02 | 0400      | 30               | 
我希望这是有道理的。我计划将其用于JS图,但由于我不需要或不想要单独的认捐及其金额值,我只想要每小时的金额和总数。

您可以使用
concat(左(VATTime,2),'00')
获取小时:

select count(VATid) counts, VATDate g_VATDate, 
  concat(left(VATTime, 2), '00') g_VATTime, 
  sum(VATPledgeAmount) Total_VATPledgeAmount
from VAT
group by g_VATDate, g_VATTime;

如何计算
VATSwareAmount
?它实际上是一个美元值,因此在我的最后一个等式中,我希望得到它们所属小时的值的总和。下次,记住将日期和时间存储为单个实体。并将钱存储为十进制!谢谢你的提示!:)