MySQL学习笔记4——时间函数

MySQL时间函数

  • 一、日期时间类型
    • 1、获取日期时间数据中部分信息的函数
    • 2、计算日期时间的函数
    • 3、其他日期时间函数

一、日期时间类型

时间函数就是用来处理时间的函数。时间,几乎可以说是各类项目中都会存在的数据,项目需求不同,我们需要的时间函数也不一样, 比如:

  • 如果我们要统计一天之中不同时间段的销售情况,就要获取时间值中的小时值,这就会用到函数HOUR();
  • 要计算与去年同期相比的增长率,这就要计算去年同期的日期时间,会用到函数DATE_ ADD();
  • 要计算今天是周几、有没有优惠活动,这就要用到函数DAYOFWEEK()了;
  • ……

1、获取日期时间数据中部分信息的函数

首先,我们来分析一下“统计一天中每小时的销售数量和销售金额”的这个需求。

先创建三个表,基于这三个表的信息进行举例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

要统计一天中每小时的销售情况,实际上就是要把销售数据按照小时进行分组统计。那么,解决问题的关键,就是把交易时间的小时部分提取出来。这就要用到MySQL的日期时间处理函数EXTRACT ()和HOUR () 了。
为了获取小时的值,我们要用到EXTRACT()函数。EXTRACT (type FROM date)表示从日期时间数据"date" 中抽取"type"指定的部分。

SELECTEXTRACT(HOUR FROM b.transdate) AS 时段,SUM(a.quantity) AS 数量,SUM(a.salesvalue) AS 金额
FROMdemo.transactiondetails aJOINdemo.transactionhead b ON (a.transactionid = b.transactionid)
GROUP BY EXTRACT(HOUR FROM b.transdate)
ORDER BY EXTRACT(HOUR FROM b.transdate);

查询的过程是这样的:

  1. 从交易时间中抽取小时信息: EXTRACT(HOUR FROM b.transdate);
  2. 按交易的小时信息分组;
  3. 按分组统计销售数量和销售金额的和;
  4. 按交易的小时信息排序。

这个查询,也可以通过使用日期时间函数HOUR()来达到同样的效果。HOUR (time) 表示从日期时间"time"中,获取小时部分信息。

SELECTHOUR(b.transdate) AS 时段,		--改写为HOUR()函数SUM(a.quantity) AS 数量,SUM(a.salesvalue) AS 金额
FROMdemo.transactiondetails aJOINdemo.transactionhead b ON (a.transactionid = b.transactionid)
GROUP BY HOUR(b.transdate)			--改写为HOUR()函数
ORDER BY HOUR(b.transdate);			--改写为HOUR()函数

除了获取小时信息,我们往往还会遇到要统计年度信息、月度信息等情况,MySQL也提供了支持的函数。这些函数的使用方法和提取小时信息的方法一样。

YEAR (date)   :获取date中的年。
MONTH (date)  :获取date中的月。
DAY (date)    :获取date中的日。
HOUR (date)   :获取date中的小时。
MINUTE (date) :获取date中的分。
SECOND (date) :获取date中的秒。

2、计算日期时间的函数

我先来介绍2个常用的MySQL的日期时间计算函数:

  • DATE_ ADD (date, INTERVAL表达式type):表示计算从时间点"date" 开始,向前或者向后一段时间间隔的时间。“表达式”的值为时间间隔数,正数表示向后,负数表示向前,“type” 表示时间间隔的单位(比如年、月、日等)。
  • LAST DAY (date):表示获取日期则间"date"所在月份的最后一天的日期。
-- 今天是2024-04-16
SELECT DATE_ADD('2024-04-16',INTERVAL - 1 YEAR);
-- 结果返回“2023-04-16”SELECT DATE_ADD(DATE_ADD('2024-04-16', INTERVAL -1 YEAR), INTERVAL -1 MONTH);
-- 结果返回“2023-03-16”SELECT LAST_DAY(DATE_ADD('2024-04-16',INTERVAL - 1 YEAR));
-- 结果返回“2023-04-30”

3、其他日期时间函数

这时就要用到其他日期时间函数了,主要包括:

  • CURDATE()
  • DAYOFWEEK()
  • DATE_ FORMAT
  • DATEDIFF()
  • ……

CURDATE () :获取当前的日期。日期格式为"YYYY-MM-DD" ,也就是年月日的格式。

DAYOFWEEK (date):获取日期"date" 是周几。1表示周日,2表示周一,以此类推,直到7表示周六。

总结:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/623287.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS导读 (复合选择器 上)

(大家好,今天我们将继续来学习CSS的相关知识,大家可以在评论区进行互动答疑哦~加油!💕) 目录 二、CSS的复合选择器 2.1 什么是复合选择器 2.2 后代选择器(重要) 2.3 子选择器(重要) Questions 小提…

【数据可视化包Matplotlib】Matplotlib基本绘图方法

目录 一、Matplotlib绘图的基本流程(一)最简单的绘图(仅指定y的值)(二)更一般的绘图(同时指定x和y的值)(三)增加更多的绘图元素 二、布局相关的对象——Figur…

【XR806开发板试用】XR806在U8G2上增加MQTT+JSON控制

一、前言 U8G2移植参见之前写的文章 https://aijishu.com/a/1060000000292472本次增加MQTTJSON是站在大佬的肩膀上,参见 https://aijishu.com/a/1060000000284320CJSON的使用,参见 https://blog.csdn.net/fengxinlinux/article/details/53121287 二、成…

【C++类和对象】类和对象的引入

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

《二》Qt Creator工具介绍与使用

一、关于界面 点击文件--->新建文件或项目会出现如下图: 我们选择第一个 点击下一步下一步: 继续下一步直到结束: 二,具体文件介绍 我们点击pro查看以下 QT core gui第1行 表示使用qt的core和gui库,如果以后…

VScode配置C++环境进行运行和调试

文章目录 1、配置开发环境:即可以安装MinGW-w64(Windows平台的一个gcc/g编译器)2、在VScode中安装C/C插件3、VScode的编译和运行的配置4、VScode的调试的配置 1、配置开发环境:即可以安装MinGW-w64(Windows平台的一个g…

计算机网络—TCP协议详解:协议构成、深度解析(1)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:マリンブルーの庭園—ずっと真夜中でいいのに。 0:34━━━━━━️💟──────── 3:34 🔄 ◀️…

r3live 使用前提 雷达-相机外参标定 livox_camera_lidar_calibration

标定的是相机到雷达的,R3live下面配置的雷达到相机的,所以要把得到外参旋转矩阵求逆,再填入,平移矩阵则取负 港科大livox_camera_calib虽然操作方便,但是使用mid360雷达会有视角问题(投影三维点到相机),尝试了很多场景&#xff0c…

群晖NAS安装Synology Office与Drive结合内网穿透实现本地文件公网分享与远程协作

文章目录 本教程解决的问题是:1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是: 1.Word,PPT,Excel等重要文件存在本地环境,如何在编…

如何用JAVA如何实现Word、Excel、PPT在线前端预览编辑的功能?

背景 随着信息化的发展,在线办公也日益成为了企业办公和个人学习不可或缺的一部分,作为微软Office的三大组成部分:Word、Excel和PPT也广泛应用于各种在线办公场景,但是由于浏览器限制及微软Office的不开源等特性,导致…

Ubuntu系统器怎么关闭防火墙?Ubuntu系统关闭防火墙命令

与许多Linux发行版,甚至Windows和 macOS 一样,Ubuntu系统也配备了防火墙。这是一项安全功能,可以阻止来自系统上不需要的源的连接。但有时,如果您想让所有网络流量通过,您可能需要禁用它。您甚至可能还想在防火墙上打开…

springboot+Vue项目部署到云服务器上

一、下载配置ngnix 1.压缩包下载并上传 链接: https://pan.baidu.com/s/1m2LKV8ci4WXkAWdJXIeUFQ 提取码: 0415 2.解压 tar -xzvf 压缩包名 3.编译nginx 在解压好的文件夹下,依次执行: ./configure 来到nginx默认安装路径/usr/local/nginx 依次执行命令 mak…