mysql基础9——时间函数

统计一天中每小时的销售数量和销售金额

将数据按照小时进行分组统计 关键就是把交易时间的小时部分提取出来 使用extract()和hour()

使用extract()获取小时的值

extract(type from date)    表示从日期时间数据date中抽取type指定的部分

select extract(hour from b.transdate) as 时段,sum(a.quantity) as 数量,sum(a.salesvalue) as 金额
from demo.transactiondetails as a
join demo.transactionhead as b on (a.transactionid=b.transactionid)
group by extract(hour from b.transdate)
order by extract(hour from b.transdate);

查询过程:

1)从交易时间中抽取小时信息

2)按交易的小时信息分组

3)按分组统计销售数量和销售金额的和

4)按交易的小时信息排序

使用hour(date时间)获取小时信息也可

select hour(b.transdate) as 时段,sum(a.quantity) as 数量,sum(a.salesvalue) as 金额
from demo.transactiondetails as a
join demo.transactionhead as b on (a.transactionid=b.transactionid)
group by hour(b.transdate)
order by hour(b.transdate);

计算日期时间的函数

date_add(date, interval表达式 type)

表示计算从时间点’date‘开始,向前或者向后一段时间间隔的时间 ;

表达式的值为时间间隔数 正数表示向后,负数表示向前 ;

type表示时间间隔的单位(月,日,年等);

last_day(date)

表示获取日期时间“date”所在月份的最后一天的日期

假设今天是2020年12月10日,计算这个月单品销售金额的统计 以及去年同期相比的增长率

关键点是获取2019年12月10的销售数据 --> 计算2019年12月的起始和截至时间点就是关键

1)使用date_add函数获取到2020年12月10日上一年的日期:2019年12月10日

select date_add('2020-12-10',interval -1 year);

2)获取2019年12月10日这个时间节点开始上个月的日期 

select date_add(date_add('2020-12-10',interval -1 year), interval -1 month);

3)获取2019年11月10日这个时间点月份的最后一天

select last_day(data_add(date_add('2020-12-10',interval -1 year),interval -1 month));

4)计算2019年11月30日后一天的日期  12月01日

select date_add(last_day(data_add(date_add('2020-12-10',interval -1 year),interval -1 month)),interval +1 day);

5)获取截至日期

select date_add(last_day(data_add('2020-12-10',interval -1 year)),interval +1 day));

每周的不同天都会打不同的折扣,知道某天具体的价格,需要知道当前的日期以及今天是星期几 

curdate()

获取当前的日期  日期格式为“YYYY-MM-DD” 年月日的格式

dayofweek(date) 

获取日期date是周几 1表示周日,2表示周一,...,7表示周六

假设今天是2021年2月6日,查询今天商品的全部折扣后的价格

select
curdate() as 日期,
case dayofweek(curdate()) -1 when 0 then 7 else dayofweek(curdate())-1
a.goodsname as 商品价格
a.salesprice as 价格
ifnull(b.discountrate,1) as 折扣率
a.salesprice * ifnull(b.discountrate,1) as 折后价格
from demo.goodmaster as a
left join demo.discountruble as b on (a.itemnum=b.itemnum) 
and case dayofweek(curdate()) -1 when 0 then 7 else dayofweek(curdate())

case函数语法

case 表达式 when 值1 then 表达式1 [when 值2 then 表达式2] else 表达式m end

date_format  将日期按照指定格式显示

24小时制查看时间  
select date_format("2020-12-01 13:25:50", "%T");

上下午方式查看时间
select date_format("2020-12-01 13:25:50", "%r");

获取今天是星期几

datediff(date1,date2)

表示日期“date1”与“date2”之间相隔几天

计算某段时间的每天交易金额的平均值,把起始日期和截至日期之间的总金额,再除以天数

select datediff("2021-02-01","2020-12-01");

注意:mysql获取的时间就是mysql服务器计算机的系统时间  若系统有一定规模,需在多台计算机上运行,注意时间较准问题,

解决方法

1)利用windows系统自带的网络同步方式 较准系统时间

2)统一从总部myssql服务器获取时间(或采用云服务器,系统时间的可靠性更高)

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

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

相关文章

❤️新版Linux零基础快速入门到精通——第三部分❤️

❤️新版Linux零基础快速入门到精通——第三部分❤️ 非科班的我!Ta!还是来了~~~3. Linux权限管控3.1 认知root用户3.1.1 Switch User——su3.1.2 sudo命令3.1.3 为普通用户配置sudo认证 3.2 用户和用户组3.2.1 用户、用户组3.2.2 用户组管理3.2.3 用户管…

声明式事务

文章目录 1.事务分类1.传统方式解决事务2.声明式事务 2.声明式事务案例1.需求分析2.解决方案分析3.数据表创建4.编写GoodsDao.java1.编写配置文件JdbcTemplate_ioc.xml2.单元测试 5.编写GoodsService.java6.配置事务管理器JdbcTemplate_ioc.xml7.进行测试 3.debug事务管理器Dat…

【Linux】在ubuntu快速搭建部署K8S(1.27)集群

ubuntu快速安装K8s1.27 (一)环境说明1.硬件环境2.Ubuntu环境设置 (二)安装配置containerd1.安装2.配置3.启动 (三)所有节点操作1.安装runc和cni2.节点系统设置、关闭临时分区3.修改内核参数4.安装 kubeadm、…

稀碎从零算法笔记Day56-LeetCode:组合总和 Ⅳ

题型:DP、数组 链接:377. 组合总和 Ⅳ - 力扣(LeetCode) 来源:LeetCode 题目描述 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的…

代码随想录算法训练营第四十一天| 343.整数拆分、96.不同的二叉搜索树

系列文章目录 目录 系列文章目录343. 整数拆分动态规划 96.不同的二叉搜索树动态规划 343. 整数拆分 动态规划 动规五部曲: 确定dp数组(dp table)以及下标的含义:dp[i]表示分拆数字i,可以得到的最大乘积为dp[i]。确…

盲人出行挑战与曙光:“盲人视觉辅助技术研发”助力无障碍生活

作为一名资深记者,我深感盲人朋友们在日常出行中面临的种种困难。然而,在科技日新月异的今天,一项名为蝙蝠避障的专为盲人视觉辅助技术研发的领域正在以前沿科技成果,为改善盲人出行困境带来希望之光。本文将深入探讨这一技术如何…

FastGPT+ChatGLM3本地部署

FastGPTChatGLM本地部署 本地部署硬性要求:显存13g以上 关于环境的安装就不多赘述,conda pip 可以解决大部分问题 ChatGLM本地运行 m3e-basechatglm3-6b 在huggingface上可以下载上述模型,如果没有梯子可以使用huggingface镜像 从git…

【进程地址空间】地址空间理解存在原因 | 深入理解页表写时拷贝虚拟地址

目录 地址空间深入理解 划分区域 理解地址空间 地址空间存在的意义 意义1 意义2 意义3 理解页表和写时拷贝 页表 写时拷贝 OS识别错误 理解虚拟地址 fork解释 上篇我们简单的学习了进程地址空间/页表/物理地址/虚拟地址/写时拷贝等概念。本篇深入理解下。 地址空…

Ubuntu系统下 Nvidia驱动 + cuda驱动 + CuDNN安装与卸载

Ubuntu系统下 Nvidia驱动 cuda驱动 CuDNN安装与卸载 一、NVIDIA驱动与CUDA驱动的区别二、NVIDIA驱动安装与卸载1. 查看系统内核版本2. 查看显卡型号3. 查看是否有显卡驱动4. 禁用nouveau并重启5. 卸载旧版本6. 安装1:使用标准Ubuntu仓库进行自动化安装…

学习笔记Day21:转录组差异分析

转录组差异分析 差异分析难点在于将数据处理成需要的格式 表达矩阵 数值型矩阵-count 行名是symbol 低表达量的基因需要过滤 分组信息 因子,对照组在level第一位 与表达矩阵的列一一对应 项目名称 字符串(不要有特殊字符) TCGA-XX…

路由策略实验

一.实验拓扑图: 二.实验要求: 1.按照图示配置IP地址,R1,R3,R4上使用loopback口模拟业务网段 2.R1和R2运行RIPv2,R2,R3和R4运行OSPF,各自协议内部互通 3.在RIP和OSPF间配置双向路由引入,要求除R4…

PHP 函数的命名空间是否会影响执行顺序?

在 php 中,函数命名空间一般不会影响执行顺序。执行顺序通常由文件顺序或函数调用顺序决定。即使函数位于不同的命名空间中,只要它们在同一文件中,它们就会按照定义顺序执行。 PHP 函数命名空间是否会影响执行顺序? 简介 在 PHP…

pygame 烟花效果

# 初始化 pygame.init() screen_width 800 screen_height 600 screen pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption(烟花效果) # 焰火发射 particles [] # 焰火粒子 def firework(x, y): num_particles 100 # 每次发射的…

关于ResNet的假说

ResNet 最核心的思想就是 恒等映射吧 那么现在来提出几个问题: 为什么deeper 以后train L 会增加?恒等映射会解决什么问题?能否解决梯度非常陡峭的问题?你想到了什么模型有类似的问题,如何进行改进的? as…

本地环境通过ssh通道连接服务器数据库,实现本地客户端和代码可以访问数据库

使用方法: ssh -p 搭建隧道的端口 -fNL 本地端口:远程ip:远程端口号 搭建隧道的账号搭建隧道的ip 可以增加参数-v,输出更多的信息 ssh -p 搭建隧道的端口 -fNL 本地端口:远程ip:远程端口号 -v 搭建隧道的账号搭建隧道的ip 有时候,测试环境的数据库不允许…

ClickHouse 数据类型、表引擎与TTL

文章目录 数据类型表引擎1.TinyLog 引擎2.MergeTree 引擎3.ReplacingMergeTree 引擎4.AggregatingMergeTree 引擎5.SummingMergeTree 引擎6.CollapsingMergeTree 引擎7.Distributed 引擎 TTL列级 TTL表级TTL 数据类型 ClickHouse 数据类型Java 数据类型数据范围UInt8Short0 到…

获取肖博数学全套视频+讲义

肖博数学是一个专业团队,教学方法非常颠覆,具有很多技巧&特殊的解题方法内容,能使得学生在高考时冲刺高分 hello,今天分享一下高中数学资料,肖博数学, 他们的教学方法与传统的教学方式有所不同&#…

vue实现周日历 日历按周切换 vue日程管理

实现的功能 1、点击今天:回到今日日期并选中今日日期,查当天数据 2、点击左箭头:切换上一周 3、点击右箭头:切换下一周 4、黄圆圈代表有日程提醒,点击选中,下方对应显示当前日程提醒的内容,没有…

C++设计模式|创建型 4.建造者模式

1.什么是建造者模式? 建造者模式(也被成为生成器模式),是一种创建型设计模式,软件开发过程中有的时候需要创建很复杂的对象,而建造者模式的主要思想是将对象的构建过程分为多个步骤,并为每个步骤定义一个…

nlp 自然语言处理的dataset数据库积累

下面的这个和 entity recognition有关的。 Weights & Biases