MySQL-日期时间函数详解及练习

news2024/11/20 3:22:39

目录

3.1 返回当前日期

3.2 提取日期部分

3.3 增加或减去时间

3.4 格式化时期或时间

3.5 牛客练习题


3.1 返回当前日期

1. CURDATE() 或 CURRENT_DATE() | 返回当前日期

select curdate();

select current_date();

结果:

2. CURTIME() 或 CURRENT_TIME() | 返回当前时间

select curtime();

select current_time();

结果:

3. NOW()或CURRENT_TIMESTAMP()或LOCALTIME()或LOCALTIMESTAMP() | 返回当前系统日期时间

select now();
select current_timestamp();
select localtimestamp();

结果:

4. SYSDATE() | 返回函数执行时的时间

注意:NOW()取自mysql的变量”TIMESTAMP”,而这个变量在语句开始执行的时候就设定好了,所以在整个语句执行过程当中都不会变化,而SYSDATE()取的是动态的实时时间。

# 这里两个now返回的值是一样的,因为都是表示语句开始执行的时间
select now(),sleep(3),now();

# SYSDATE获取当时执行时实时的时间
select sysdate(),sleep(3),sysdate();

结果:

也正因为有这个区别,我们一般在执行语句的时候,都是用NOW(),因为SYSDATE获取当时实时的时间,这有可能导致主库和从库是执行的返回值是不一样的,导致主从数据不一致。

3.2 提取日期部分

1.【YEAR(date) | 提取年份】、【MONTH(date) | 提取月份】、【DAY(date) | 提取天数】、【HOUR(time) | 提取小时数】、【MINUTE(time) | 提取分钟】、【SECOND(time) | 提取秒】

select year ('2023-12-7'),month('2023-12-7'),day('2023-12-7');
select hour('2023-12-7 20:48:23'),minute('2023-12-7 20:48:23'),second('2023-12-7 20:48:23');

结果:

2.【DAYOFYEAR(date) | 返回一年中的天数(1-366)】、【DAYOFMONTH(date) | 同DAY(date),返回月份中的天数】、【DAYOFWEEK(date) | 返回周几的索引,注意:周日是1,周一是2,。。。周六是7】

select dayofyear ('2023-12-7'),dayofmonth ('2023-12-7'),dayofweek('2023-12-7');

结果:

3.【WEEK(date)或WEEKOFYEAR(date) | 返回一年中的第几周】、【YEARWEEK(date) | 返回年份和周数】

select week ('2023-12-7'),weekofyear('2023-12-7'),yearweek('2023-12-7');

结果:

4.【MONTHNAME(date) | 返回月份的名称】、【DAYNAME(date) | 返回给定日期对应的周几的名称】

select monthname('2023-12-7'),dayname('2023-12-7');

结果:

3.3 增加或减去时间

  1. DATE_ADD(date, INTERVAL expr unit) | 向日期值增加时间间隔

#数值可以是负数,unit可以是如果表达式列出的任意一个类型
select date_add('2023-12-7 20:48:23',interval 1 year) as 'add 1 year',
       date_add('2023-12-7 20:48:23',interval '1_2' YEAR_MONTH) as 'add 1 year and 2 month',
       date_add('2023-12-7 20:48:23',interval -1 day) as 'sub 1 day';
       
select date_add('2023-12-7 20:48:23',interval 1 hour) as 'add 1 hour',
       date_add('2023-12-7 20:48:23',interval '1_2' HOUR_MINUTE) as 'add 1 hour and 2 mins',
       date_add('2023-12-7 20:48:23',interval -1 second ) as 'sub 1 second';

结果:

unit 表达式类型

YEAR_MONTH

YEAR

DAY_HOUR

MONTH

DAY_MINUTE

DAY

DAY_SECOND

HOUR

HOUR_MINUTE

MINUTE

HOUR_SECOND

SECOND

MINUTE_SECOND

2.【DATEDIFF(date1,date2) | 返回date1 - date2的日期间隔】、【TIMEDIFF(time1, time2) | 返回time1 - time2的时间间隔】

select datediff('2023-12-7','2023-12-15') as '日期差',
       timediff('2023-12-7 20:48:23','2023-12-7 19:38:00') as '时间差';

结果:

3.4 格式化时期或时间

1. DATE_FORMAT(date, format) | 按指定格式格式化日期

select date_format('2023-12-7 20:48:23','%Y/%m/%d'),
       date_format('2023-12-7 20:48:23','%Y-%m-%d');

结果:

2. STR_TO_DATE(str,format) | 将时间格式的字符串(str),按照所提供的显示格式(format)转换为DATETIME类型的值

#STR_TO_DATE()函数可能会根据输入和格式字符串返回DATE,TIME或DATETIME值。
select str_to_date('2023-12-7 20:48:23','%Y/%m/%d'),
       str_to_date('2023-12-7 20:48:23','%Y-%m-%d'),
       str_to_date('2023-12-7 20:48:23','%Y-%m-%d %H:%i:%s');

结果:

  • #如果输入字符串是非法的,则STR_TO_DATE()函数返回NULL。

  • #如果月份和日期的数字小于10,用0填充,显示两位数字;

3. 常见的format格式

DATE_FORMAT字符串格式

格式化日期

%Y/%m/%d

2022/04/26

%Y-%m-%d

2022-04-26

%e/%c/%Y

4/8/2022

%d/%m/%Y %H:%i

26/04/2022 17:27

%b %d %Y %h:%i %p

Apr 26 2022 05:28 PM

%W %D %M %Y %T

Tuesday 26th April 2022 17:31:34

4. 格式符详解:

格式符

说明

格式符

说明

%Y

4位数字表示年份

%y

表示两位数字表示年份

%M

月名表示月份(January,....)

%m

两位数字表示月份(01,02,03。。。)

%b

缩写的月名(Jan.,Feb.,....)

%c

数字表示月份(1,2,3,...)

%D

英文后缀表示月中的天数(1st,2nd,3rd,...)

%d

两位数字表示月中的天数(01,02...)

%e

数字形式表示月中的天数(1,2,3,4,5.....)

%H

两位数字表示小数,24小时制(01,02..)

%h和%I

两位数字表示小时,12小时制(01,02..)

%k

数字形式的小时,24小时制(1,2,3)

%l

数字形式表示小时,12小时制(1,2,3,4....)

%i

两位数字表示分钟(00,01,02)

%S和%s

两位数字表示秒(00,01,02...)

%W

一周中的星期名称(Sunday...)

%a

一周中的星期缩写(Sun.,Mon.,Tues.,..)

%w

以数字表示周中的天数(0=Sunday,1=Monday....)

%j

以3位数字表示年中的天数(001,002...)

%U

以数字表示年中的第几周,(1,2,3。。)其中Sunday为周中第一天

%u

以数字表示年中的第几周,(1,2,3。。)其中Monday为周中第一天

%T

24小时制

%r

12小时制

%p

AM或PM

%%

表示%

3.5 牛客练习题

牛客SQL28-计算用户8月每天的练题数量

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

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

相关文章

CopyOnWriteArraySet怎么用

简介 CopyOnWriteArraySet是一个线程安全的无序集合,它基于“写时复制”的思想实现。它继承自AbstractSet,可以将其理解成线程安全的HashSet。 CopyOnWriteArraySet在读取操作比较频繁、写入操作相对较少的情况下可以提高程序的性能和可靠性。它的线程…

Win10 安装.NET Framework 3.5 报错0x80240438

环境: Win10专业版 NET Framework 3.5 问题描述: Win10 安装.NET Framework 3.5 报错0x80240438 解决方案: 1.检查自动更新服务是否未开启,开启自动更新失败,用工具开启自动更新,重启电脑(未解决&am…

SAP UI5 walkthrough step2 Bootstrap

我的理解&#xff0c;这就是一个引导指令 1.我们右键打开命令行--执行 ui5 use OpenUI5 2.执行命令&#xff1a;ui5 add sap.ui.core sap.m themelib_sap_horizon 执行完之后&#xff0c;会更新 yaml 文件 3.修改index.html <!DOCTYPE html> <html> <head&…

学习spring、springmvc、mybatis、ssm所有可能用到的依赖总结,父工程pom文件依赖,<packaging>pom</packaging>

1、父工程pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/PO…

VR转接线方案/VR Link串流数据线方案/VR眼镜PD快充方案

虚拟现实技术(英文名称&#xff1a;Virtual Reality&#xff0c;缩写为VR)&#xff0c;又称虚拟实境或灵境技术&#xff0c;是20世纪发展起来的一项全新的实用技术。虚拟现实技术囊括计算机、电子信息、仿真技术&#xff0c;其基本实现方式是以计算机技术为主&#xff0c;利用并…

Appium python自动化测试系列之移动自动化测试!

1.1 移动自动化测试现状 因为软件行业越来越发达&#xff0c;用户的接受度也在不断提高&#xff0c;所以对软件质量的要求也随之提高&#xff0c;当然这个也要分行业&#xff0c;但这个还是包含了大部分。因为成本、质量的变化现在对自动化测试的重视度越来越高&#xff0c;在…

【TiDB理论知识09】TiFlash

一 TiFlash架构 二 TiFlash 核心特性 TiFlash 主要有 异步复制、一致性、智能选择、计算加速 等几个核心特性。 1 异步复制 TiFlash 中的副本以特殊角色 (Raft Learner) 进行异步的数据复制&#xff0c;这表示当 TiFlash 节点宕机或者网络高延迟等状况发生时&#xff0c;Ti…

Java一对一聊天

服务端 package 一对一用户;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector;…

[idea]idea连接clickhouse23.6.2.18

一、安装驱动 直接在pom.xml加上那个lz4也是必要的不然会报错 <dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.4.2</version></dependency><dependency><group…

Python函数默认参数设置

在某些情况下&#xff0c;程序需要在定义函数时为一个或多个形参指定默认值&#xff0c;这样在调用函数时就可以省略为该形参传入参数值&#xff0c;而是直接使用该形参的默认值。 为形参指定默认值的语法格式如下&#xff1a; 形参名 默认值 从上面的语法格式可以看出&…

一篇解析context_switch进程切换(针对ARM体系架构)

一. 概述 在最近初学ebpf时&#xff0c;使用到了挂载点finish_task_switch统计内核线程的运行时间&#xff0c;遂进入内核源码对其进行学习分析。 finish_task_switch在context_switch被调用&#xff0c;其功能是完成进程切换的收尾工作&#xff0c;比如地址空间的清理。而co…

理解自我效能感:你的内在动力来源

1. 自我效能感&#xff1a;开启个人潜能的心理动力 想象一下&#xff0c;面对生活的挑战和机遇时&#xff0c;是什么内在力量驱使你去采取行动&#xff0c;或者让你犹豫不决&#xff1f;这种力量&#xff0c;与我们的心理状态紧密相关&#xff0c;其中一个关键因素就是我们的自…

【AIGC】prompt工程从入门到精通

注&#xff1a;本文示例默认“文心大模型3.5”演示&#xff0c;表示为>或w>&#xff08;wenxin)&#xff0c;有时为了对比也用百川2.0展示b>&#xff08;baichuan) 有时候为了模拟错误输出&#xff0c;会用到m>&#xff08;mock)表示&#xff08;因为用的大模型都会…

uView框架的安装与Git管理

参考链接&#xff1a;Http请求 | uView - 多平台快速开发的UI框架 - uni-app UI框架 安装 打开我们项目的cmd进行下载&#xff1a; yarn add uview-ui 首先我们要确定&#xff0c;未下载前的文件目录以及下载后&#xff0c;是多了个文件目录node_modules 下载完成之后我们就…

MTU TCP-MSS(转载)

MTU MTU 最大传输单元&#xff08;Maximum Transmission Unit&#xff0c;MTU&#xff09;用来通知对方所能接受数据服务单元的最大尺寸&#xff0c;说明发送方能够接受的有效载荷大小。 是包或帧的最大长度&#xff0c;一般以字节记。如果MTU过大&#xff0c;在碰到路由器时…

汽车电子之深力科推荐安森美车规级芯片

车规级芯片 在汽车制造业&#xff0c;就可靠性要求而言&#xff0c;车规级芯片无疑是要高于商业级和工业级。 而车规级芯片&#xff1a;顾名思义&#xff0c;就是应用到汽车中的芯片&#xff0c;它不同于日常生活中的消费品和工业品&#xff0c;该类芯片对可靠性要求较高&…

vue2+datav可视化数据大屏(3)

接上一节所说&#xff0c;当我们将接口封装完了后&#xff0c;我们需要给大屏进行内容填充啦 1,新建组件 &#x1f4d3; 我们在ser-views文件夹下新建9个vue组件&#xff0c;如下图所示&#xff0c;我给编号为1到9 &#x1f4d3;在组件里写入内容我是第一块...一次类推&#x…

100. 相同的树(Java)

目录 解法&#xff1a; 官方解法&#xff1a; 方法一&#xff1a;深度优先搜索 复杂度分析 时间复杂度&#xff1a; 空间复杂度&#xff1a; 方法二&#xff1a;广度优先搜索 复杂度分析 时间复杂度&#xff1a; 空间复杂度&#xff1a; 给你两棵二叉树的根节点 p 和…

学习IO的第五天

作业 &#xff1a;使用两个线程完成文件的拷贝写入&#xff0c;分线程1写入前半段&#xff0c;分线程2写入后半段&#xff0c;主线程用来回收资源 #include <head.h>void *sork(void *arg); void *sork2(void *arg);int file_copy(int start,int len) //拷贝的函数 {i…

Vulnerability: File Upload(Medium)--MYSQL注入

选择难度&#xff1a; 1.打开DVWA&#xff0c;并登录账户 2.选择模式&#xff0c;这里我们选择 文件上载的中级模式&#xff08;Medium&#xff09; 准备工作 1.在vsc里面写个一句话木马 2.下载BurpSuiteCommunit软件&#xff1a;百度搜索“burp suite官网” 下载地址www…