简单按日期查询mysql某张表中的记录数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单按日期查询mysql某张表中的记录数相关的知识,希望对你有一定的参考价值。

测试表表结构:
mysql> show create table dr_stats\G
1. row

       Table: dr_stats
Create Table: CREATE TABLE `dr_stats` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `views` int(10) NOT NULL DEFAULT ‘0‘ COMMENT ‘展示量‘,
  `num` mediumint(8) NOT NULL DEFAULT ‘0‘ COMMENT ‘计费量‘,
  `advnum` int(10) NOT NULL DEFAULT ‘0‘ COMMENT ‘广告商计费数‘,
  `clicks` mediumint(8) NOT NULL DEFAULT ‘0‘ COMMENT ‘点击量‘,
  `do2click` mediumint(8) NOT NULL DEFAULT ‘0‘ COMMENT ‘二次点击量‘,
  `day` date NOT NULL DEFAULT ‘0000-00-00‘ COMMENT ‘计费日期‘,
  `planid` mediumint(8) NOT NULL DEFAULT ‘0‘ COMMENT ‘计划ID‘,
  `uid` mediumint(8) NOT NULL DEFAULT ‘0‘ COMMENT ‘站长ID‘,
  `siteid` mediumint(8) NOT NULL DEFAULT ‘0‘ COMMENT ‘站点ID‘,
  `zoneid` mediumint(8) NOT NULL DEFAULT ‘0‘ COMMENT ‘广告位ID‘,
  `adstypeid` mediumint(8) NOT NULL COMMENT ‘广告类型ID‘,
  `deduction` mediumint(8) NOT NULL DEFAULT ‘0‘ COMMENT ‘扣量‘,
  `sumprofit` decimal(10,4) NOT NULL DEFAULT ‘0.0000‘ COMMENT ‘扣量金额‘,
  `sumpay` decimal(10,4) NOT NULL DEFAULT ‘0.0000‘ COMMENT ‘计费金额‘,
  `sumadvpay` decimal(10,4) NOT NULL DEFAULT ‘0.0000‘ COMMENT ‘计费总金额‘,
  `status` tinyint(1) NOT NULL DEFAULT ‘0‘ COMMENT ‘是否已结算‘,
  `dosage` mediumint(8) NOT NULL DEFAULT ‘0‘ COMMENT ‘补量‘,
  `sumdosage` decimal(10,4) NOT NULL DEFAULT ‘0.0000‘ COMMENT ‘补量金额‘,
  `pclick` int(8) NOT NULL DEFAULT ‘0‘,
  PRIMARY KEY (`id`),
  UNIQUE KEY `day` (`day`,`planid`,`uid`,`siteid`,`zoneid`,`adstypeid`),
  KEY `planid_uid` (`planid`,`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=9298495886 DEFAULT CHARSET=utf8 COMMENT=‘站点结算‘
1 row in set (0.00 sec)

查询一张表中一年的中4月份的数据:

mysql -uroot -p‘ZykJ7‘ -S /tmp/mysql.sock -e ‘use drnew;select * from dr_stats where 1 and month(day)=04;‘

查询一张表中一年的中5月份有多少条记录:
[[email protected] ~]# time mysql -uroot -p‘ZykJ7‘ -S /tmp/mysql.sock -e ‘use drnew;select count(*) from dr_stats where 1 and month(day)=05;‘
Warning: Using a password on the command line interface can be insecure.
+----------+
| count(*) |
+----------+
|  1071903 |
+----------+

[[email protected] ~]# time mysql -uroot -p‘ZykJ7‘ -S /tmp/mysql.sock -e ‘use drnew;select count(*) from dr_stats where 1 and month(day)=05 and  day(day)  between 1 and 31;‘
Warning: Using a password on the command line interface can be insecure.
+----------+
| count(*) |
+----------+
|  1071903 |
+----------+

查询dr_stats表2016年 4月1日至2016年4月21日的数据记录数:


time mysql -uroot -p‘ZykJ7‘ -S /tmp/mysql.sock -e ‘use drnew;select count(*) from dr_stats where 1 and year(day)=2016 and month(day)=04 and  day(day)  between 1 and 21;‘ 
Warning: Using a password on the command line interface can be insecure.
+----------+
| count(*) |
+----------+
|        0 |
+----------+

2016年 4月1日至2016年4月21日这个dr_stats表是没有数据的

查询dr_stats表2016年 4月1日至2016年4月22日的数据记录数:

time mysql -uroot -p‘ZykJ(5678%$#@!)cpv17‘ -S /tmp/mysql.sock -e ‘use drnew;select count(*) from dr_stats where 1 and year(day)=2016 and month(day)=04 and  day(day)  between 1 and 22;‘ 
Warning: Using a password on the command line interface can be insecure.
+----------+
| count(*) |
+----------+
|       95 |
+----------+

查询dr_stats表2016年 4月22日至2016年4月23日的数据:
time mysql -uroot -p‘ZykJ7‘ -S /tmp/mysql.sock -e ‘use drnew;select * from dr_stats where 1 and year(day)=2016 and month(day)=04 and day(day) between 22 and 23;‘ >>/root/txt04

查询dr_stats表2016年 4月22日至2016年4月22日的数据:

[[email protected] www]# time mysql -uroot -p‘ZykJ7‘ -S /tmp/mysql.sock -e ‘use drnew;select count(*) from dr_stats where day>="2016-04-22" and day<="2016-04-22";‘
Warning: Using a password on the command line interface can be insecure.
+----------+
| count(*) |
+----------+
|       95 |
+----------+

查询dr_stats表2016年 4月21日至2016年4月22日的数据:


time mysql -uroot -p‘ZykJ7‘ -S /tmp/mysql.sock -e ‘use drnew;select count(*) from dr_stats where day>="2016-04-21" and day<="2016-04-22";‘
Warning: Using a password on the command line interface can be insecure.
+----------+
| count(*) |
+----------+
|       95 |
+----------
```+

以上是关于简单按日期查询mysql某张表中的记录数的主要内容,如果未能解决你的问题,请参考以下文章

MySQL触发器:更新一张表中的记录,其中同一行中的记录匹配选择查询

MYSQL---触发器简单了解

oracle中怎么查询某张表的分区?

mysql中的触发器

mysql 日期排序查询,就是有张表,但是表的时间不全,但是我想没有数据的日期也查出来,怎么搞?

在sqlserver2003中,如何做到当日期到每个月的某一天时(比如10号),系统自动向某张表中增加数据?