mysql 常见的时间查询

本贴最后更新于 2554 天前,其中的信息可能已经时移俗易

最近使用的一些 时间查询统计

测试表结构如下:
Create Table |

CREATE TABLE test_t (
id int(10) NOT NULL AUTO_INCREMENT,
create_time datetime DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8

两个字段 方便操作
测试数据如下:

ac3917ef3ff24044a89197002e675548-image.png

insert into test_t (id, create_time) values('1','2017-11-03 14:22:50');
insert into test_t (id, create_time) values('2','2017-11-04 14:22:54');
insert into test_t (id, create_time) values('3','2017-11-03 14:22:57');
insert into test_t (id, create_time) values('4','2017-11-01 14:23:00');
insert into test_t (id, create_time) values('5','2017-11-05 14:23:03');
insert into test_t (id, create_time) values('6','2017-11-01 14:23:11');
insert into test_t (id, create_time) values('7','2017-11-07 14:23:15');
insert into test_t (id, create_time) values('8','2017-11-02 14:23:27');
insert into test_t (id, create_time) values('9','2017-10-31 14:23:40');
insert into test_t (id, create_time) values('10','2017-11-06 14:38:37');
insert into test_t (id, create_time) values('11','2017-07-21 15:38:25');
insert into test_t (id, create_time) values('12','2017-08-18 15:38:35');
insert into test_t (id, create_time) values('13','2017-11-07 15:53:48');
insert into test_t (id, create_time) values('14','2016-11-07 16:20:25');

为了方便查看 , 都叫上了 order by 排序

1.要统计每日的新增数据 ,就要把时间戳格式的时间 FORMAT 成年-月-日的格式,并按照 format 过的字段做分组(group by),计算 count

  • SELECT DATE_FORMAT(create_time,'%Y-%m-%d') AS TIME , COUNT(*) AS COUNT FROM test_t GROUP BY TIME
    92f626f294d0438d860b2b3bb8dff90a-image.png

2.要统计最近 7 天每天的新增数据,按时间倒序排序

  • SELECT DATE_FORMAT(create_time,'%Y-%m-%d') AS TIME, COUNT(*) AS COUNT FROM test_t WHERE create_time >= DATE(NOW()) - INTERVAL 6 DAY GROUP BY DAY(create_time) ORDER BY create_time DESC;

5801efa0c1fc42ecb81f2e8fb497396f-image.png

3.要统计最近 7 天的新增数据,总计数据

  • SELECT * FROM test_t WHERE DATE_SUB(CURDATE(), INTERVAL 6 DAY) <= DATE(create_time) ORDER BY create_time DESC
    589d2709bad742e296b25c27a59aedc4-image.png

4.统计今日新增数据

  • SELECT * FROM test_t WHERE TO_DAYS(create_time) = TO_DAYS(NOW());
    10b312f6641548f382cc56ae2630c543-image.png

5.统计昨日新增数据
方法 1:

  • SELECT * FROM test_t WHERE TO_DAYS(NOW()) = 1 + TO_DAYS(create_time);
    209f1fccec3e444387d31dae04b5b2cd-image.png

方法 2: 取出昨天的和今天的记录过滤掉今天的记录

6.统计最近一周的数据
note: 最近一周不等于最近 7 天,一周是从周日开始算的,比如测试的时间是 2017-11-7,那么往前的一周就是 11-5 开始

  • SELECT * FROM test_t WHERE YEARWEEK(DATE_FORMAT(create_time,'%Y-%m-%d')) = YEARWEEK(NOW()) ORDER BY create_time DESC
    60d78eee9b9543da92cc1ac6aca04e19-image.png

7.统计最近一个月的数据
note: 最近一个月不等于最近 30 天

  • SELECT * FROM test_t WHERE create_time BETWEEN DATE_SUB(NOW(),INTERVAL 1 MONTH) AND NOW() ORDER BY create_time DESC
    df7dd728f84d4c3c8f43f1cef8036f96-image.png

8.统计上个月的数据

  • SELECT * FROM test_t WHERE PERIOD_DIFF(DATE_FORMAT(NOW() , '%Y%m') , DATE_FORMAT(create_time, '%Y%m')) = 1 ORDER BY create_time DESC
    1de438d4f8204d38afcd26a43c562e8e-image.png

9.统计本季度的数据

  • SELECT * FROM test_t WHERE QUARTER(create_time)=QUARTER(NOW()) ORDER BY create_time DESC
    7be4f3e72b3743c7bd9693a6e022479a-image.png

10.统计上个季度的数据

  • SELECT * FROM test_t WHERE QUARTER(create_time)=QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER)) ORDER BY create_time DESC
    d14d6c5a26e6469184f3eef3091a8107-image.png

11.统计今年的数据

  • SELECT * FROM test_t WHERE YEAR(create_time)=YEAR(NOW()) ORDER BY create_time DESC

54cca9b1ee834bbf8ec09425b69019c5-image.png

12.统计去年的数据

  • SELECT * FROM test_t WHERE YEAR(create_time)=YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR)) ORDER BY create_time DESC
    44672d8c79bb41ad95422f34044f1cdd-image.png
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    337 引用 • 703 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    676 引用 • 535 回帖
  • 时间

    这世上唯一公平的东西就是时间。

    12 引用 • 111 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
c3gen
羡慕有什么用,你又不努力! 成都

推荐标签 标签

  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 407 回帖 • 489 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 129 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 19 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 153 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4600 回帖 • 701 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    77 引用 • 390 回帖
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 48 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    75 引用 • 1737 回帖
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    46 引用 • 25 回帖
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 740 关注
  • 分享

    有什么新发现就分享给大家吧!

    247 引用 • 1792 回帖 • 7 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 224 关注
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖 • 2 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 69 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 123 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 60 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 15 关注
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 63 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    124 引用 • 169 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1433 引用 • 10052 回帖 • 483 关注
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 615 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    14 引用 • 106 回帖 • 1 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖 • 2 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 136 关注