MySQL中的日历/时间/时间戳

一,日历

MySQL 使用通常所说的 proleptic 阳历

每个将日历由朱利安改为阳历的国家在改变日历期间都不得不删除至少10天。 为了了解其运作,让我们看看1582年10月,这是由朱利安日历转换为阳历的第一次:

周一

周二

周三

周四

周五

周六

周日

1

2

3

4

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

在10月4 日到10月15日之间的日期为空白。这个中断被称为接入。接入前的日期均使用朱利安日历, 而接入后的日期均使用阳历。接入期间的日期是不存在的。

当一个用于日期的日历并为得到实际使用时被称为 proleptic。因此, 若我们假设从来没有接入期的存在,而阳历历法则始终被使用,我们会有一个预期的阳历 。这就是MySQL 所使用的,正如标准SQL所要求的。 鉴于这个原因,作为MySQL DATE 或 DATETIME值而被储存的接入前的日期必须调整这个差异。众所周知,接入的发生时间在不同的国家有所不同,而接入的时间越晚,遗失的日期越多。例如,在大不列颠, 接入发生在 1752年, 这年9月2日周三后的第二天为9月14日,周二; 俄罗斯结束使用朱利安日历的时间为1918年,接入过程中遗失天数为 13天, 根据阳历,其普遍被称为“10月革命”的发生时间实际上是11月。

二,获取日期和时间

1,查询当前日期

SELECT CURDATE();
SELECT CURDATE()+0;
 

2,查询当前时间

SELECT CURTIME(); 
SELECT CURTIME() + 0;

3,查询当前日期和时间

SELECT NOW();
SELECT NOW()+0;

SELECT SYSDATE();
SELECT SYSDATE()+0;

三,日期和时间转换

1, 日期/时间转换成字符串 date_format(date,format), time_format(time,format)

select date_format(now(),"%Y-%m-%d");
select time_format(now(),"%h:%i:%s");

2,字符串转换成日期时间 str_to_date(str, format)

select str_to_date('2024-03-27 12:32:24', '%Y-%m-%d %H:%i:%s'); 
select str_to_date('03.27.2024 12:32:24', '%m.%d.%Y %H:%i:%s'); 

3,日期/天数转换 to_days(date), from_days(days)

select to_days('2024-03-01'); -- 1(从1970-01-01到2024-03-01中间天数)
select to_days(curdate()); -- 739337(从1970-01-01到当前日期中间天数)
select from_days(798797); -- 2187-01-12(1970-01-01之后798797天的日期)

4,时间/秒转换 time_to_sec(time), sec_to_time(seconds)

select time_to_sec('01:00:05'); -- 3605(从每天0点0分0秒过了多少秒)
select sec_to_time(3605); -- 01:00:05(秒数转换为时间)

5,拼凑日期/时间 makdedate(year,dayofyear), maketime(hour,minute,second)

select makedate(2020,31); -- 2020-01-3(拼凑日期)
select makedate(2020,32); -- 2020-02-01(拼凑日期)
select maketime(12,15,30); -- 12:15:30(拼凑时间)

6,Unix时间戳/日期 转换函数

select unix_timestamp(); -- 1711497600
select from_unixtime(1711529796); -- 2024-03-27 08:56:36
 
select unix_timestamp(curdate()); -- 1711497600
select from_unixtime(1711497698); -- 2024-03-27 00:01:38

四,时间戳

1,  到秒级的,需要乘以1000(毫秒,因为时间戳是从起始时间到现在毫秒的差)

比如日期2024-03-11对应的时间戳范围:1710111600000-1710198000000

一天的时间戳增量:86400000

SELECT current_timestamp;
SELECT current_timestamp();

SELECT current_timestamp+0;
SELECT current_timestamp()+0;

SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(now());

2,时间戳

SELECT UNIX_TIMESTAMP()*1000;
SELECT UNIX_TIMESTAMP(now())*1000;

五,日期时间计算

1,日期/时间添加 date_add()

set @cdt = now();
 
select @cdt ;
select date_add(@cdt , interval 1 day); -- 加一天
select date_add(@cdt , interval 1 hour); -- 加一小时
select date_add(@cdt , interval 1 minute); -- 加一分钟
select date_add(@cdt , interval 1 second);
select date_add(@cdt , interval 1 microsecond);
select date_add(@cdt , interval 1 week);
select date_add(@cdt , interval 1 month);
select date_add(@cdt , interval 1 quarter);
select date_add(@cdt , interval 1 year);
 
select date_add(@cdt , interval -1 day);

2,日期/时间减少 date_sub()

select date_sub(now(), interval '1 1:1:1' day_second);

3,日期、时间相减函数 datediff(date1,date2), timediff(time1,time2)

select datediff(curdate(), '2023-05-01'); --两个日期相隔331天
select datediff('2023-05-08', '2023-05-01'); --前面日期和后面日期间隔7天

4,时间戳(timestamp)转换、增、减函数

-- 转换
select timestamp('2024-03-27'); -- 2024-03-27 00:00:00
select timestamp('2024-03-27 19:52:51', '01:01:01'); -- 2024-03-27 20:53:52
select timestamp(current_timestamp(), '10 01:01:01'); -- 2024-03-27 20:54:46
 
-- 增
select timestampadd(day, 1, current_timestamp()); -- 2024-03-28 09:06:19
select date_add(current_timestamp(), interval 1 day); -- 2024-03-28 09:06:26
 
-- 减
select timestampdiff(year,current_timestamp(),'2023-01-01'); -- -1
select timestampdiff(day ,'2024-03-27','2023-01-01'); -- -451
select timestampdiff(hour,'2024-03-27 12:00:00','2024-03-27 00:00:00'); -- -12
select datediff('2024-03-27 12:00:00', '2024-03-26 00:00:00'); -- 1

六,时区转换

1, 时区转换 convert_tz(dt,from_tz,to_tz)

select convert_tz('2024-05-08 12:00:00', '+08:00', '+00:00'); -- 2024-05-08 04:00:00
select date_add('2024-05-08 12:00:00', interval -8 hour); -- 2024-05-08 04:00:00
select date_sub('2024-05-08 12:00:00', interval 8 hour); -- 2024-05-08 04:00:00
select timestampadd(hour, -8, '2024-05-08 12:00:00'); -- 2024-05-08 04:00:00

七,时间格式说明

说明符

说明

%a

工作日的缩写名称  (Sun..Sat)

%b

月份的缩写名称  (Jan..Dec)

%c

月份,数字形式(0..12)

%D

带有英语后缀的该月日期  (0th, 1st, 2nd, 3rd, ...)

%d

该月日期, 数字形式 (00..31)

%e

该月日期, 数字形式(0..31)

%f

微秒 (000000..999999)

%H

小时(00..23)

%h

小时(01..12)

%I

小时 (01..12)

%i

分钟,数字形式 (00..59)

%j

一年中的天数 (001..366)

%k

小时 (0..23)

%l

小时 (1..12)

%M

月份名称 (January..December)

%m

月份, 数字形式 (00..12)

%p

上午(AM)或下午( PM)

%r

时间 , 12小时制 (小时hh:分钟mm:秒数ss 后加 AM或PM)

%S

秒 (00..59)

%s

秒 (00..59)

%T

时间 , 24小时制 (小时hh:分钟mm:秒数ss)

%U

周 (00..53), 其中周日为每周的第一天

%u

周 (00..53), 其中周一为每周的第一天 

%V

周 (01..53), 其中周日为每周的第一天 ; 和 %X同时使用

%v

周 (01..53), 其中周一为每周的第一天 ; 和 %x同时使用

%W

工作日名称 (周日..周六)

%w

一周中的每日 (0=周日..6=周六)

%X

该周的年份,其中周日为每周的第一天, 数字形式,4位数;和%V同时使用

%x

该周的年份,其中周一为每周的第一天, 数字形式,4位数;和%v同时使用

%Y

年份, 数字形式,4位数

%y

年份, 数字形式 (2位数)

%%

‘%’文字字符

注:

1,所有其它字符都被复制到结果中,无需作出格式化。

2,‘%’字符要求在格式指定符之前。

记得点赞关注哟!

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

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

相关文章

单臂路由和三层交换机

目录 一.单臂路由 1.单臂路由的工作原理 2.单臂路由的配置 2.1画出拓扑图 2.2配置PC 2.3配置交换机 2.4配置路由器 2.5测试 二.三层交换机 1.三层交换机的概述 2.三层交换机的配置 2.1画出拓扑图 2.2配置PC 2.3配置二层交换机 2.4配置三层交换机 2.5测试 3.拓展 三.总结 一.…

git提交和回退

目录 一. git 提交二. git commit 后准备回退,尚未 git push三. git add 添加多余文件 撤销操作四. 更改 Git commit 的默认编辑器五. 撤销某个commit的变更六. 回退到之前的commit状态总结: 一. git 提交 git pull # 更新代码 git status # 查看代码状…

ITES | 深圳工业展正运动重磅产品即将亮相

■展会名称: 第二十五届深圳国际工业制造技术及设备展览会(以下简称“深圳工业展”) ■展会日期 2024年3月28日-31日 ■展馆地点 中国深圳国际会展中心(宝安) ■展位号 9号馆F04 2024年深圳工业展(ITES)将于3月28日至31日在深圳宝安国…

springboot多模块

一、demo 1、创建父项目 首先使用 Spring Initializr 来快速创建好一个Maven工程。然后删除无关的文件,只需保留pom.xml 文件。 (1)new Project -> spring initializr快速构建SpringBoot,artifactId为springbootmodules&…

SpringBoot+ElasticSearch实现文档内容抽取、高亮分词、全文检索

需求 产品希望我们这边能够实现用户上传PDF、WORD、TXT之内得文本内容,然后用户可以根据附件名称或文件内容模糊查询文件信息,并可以在线查看文件内容。 一、环境 项目开发环境: 后台管理系统springbootmybatis_plusmysqles 搜索引擎&#…

PTA L2-037 包装机

一种自动包装机的结构如图 1 所示。首先机器中有 N 条轨道,放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中。当 0 号按钮被按下时,机械手将抓取筐顶部的一件物品&#x…

JVM第八讲:GC - Java 垃圾回收基础知识

GC - Java 垃圾回收基础知识 本文是JVM第八讲, Java 垃圾回收基础知识。垃圾收集主要是针对堆和方法区进行;程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失&#xff0…

最“原始”的收音机长啥样?

同学们大家好,今天我们继续学习杨欣的《电子设计从零开始》,这本书从基本原理出发,知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例,可以说是全面系统地介绍了电子设计所需的知识…

hadoop基本概念

一、概念 Hadoop 是一个开源的分布式计算和存储框架。 Hadoop 使用 Java 开发,所以可以在多种不同硬件平台的计算机上部署和使用。其核心部件包括分布式文件系统 (Hadoop DFS,HDFS) 和 MapReduce。 二、HDFS 命名节点 (NameNode) 命名节点 (NameNod…

k8s入门到实战(十四)—— Helm详细介绍及使用

Helm 使用 Helm 是一个 k8s 应用的包管理工具,类似于 Ubuntu 的 APT 和 CentOS 中的 YUM。 Helm 使用 chart 来封装 k8s 应用的 yaml 文件,我们只需要设置自己的参数,就可以实现自动化的快速部署应用。 Helm 通过打包的方式,支…

Nacos 配置管理-应用于分布式系统

** Nacos 配置管理-应用于分布式系统 ** 目录: 一、Nacos 配置管理-应用于分布式系统-微服务创建 1.1 发布配置 ( nacos-1.1.3 ) 1.2 打开 idea 创建一个父 Maven 工程 nacos_config 工程,和两个子模块(service1, service2 )…

MySQL进阶——锁

锁 概述 全局锁 表级锁 行级锁 概述 同Java中的锁。目的是为了保证数据一致性、完整性,提高并发安全、控制访问顺序。 分类 在MySQL中,根据锁的粒度分,分为以下3种: 全局锁:锁定数据库种的所有表 表级锁&#…

React中 类组件 与 函数组件 的区别

类组件 与 函数组件 的区别 1. 类组件2. 函数组件HookuseStateuseEffectuseCallbackuseMemouseContextuseRef 3. 函数组件与类组件的区别3.1 表面差异3.2 最大不同原因 1. 类组件 在React中,类组件就是基于ES6语法,通过继承 React.component 得到的组件…

后端常问面经之Java集合

HashMap底层原理 HashMap的数据结构: 底层使用hash表数据结构,即数组和链表或红黑树 当我们往HashMap中put元素时,利用key的hashCode重新hash计算出当前对象的元素在数组中的下标 存储时,如果出现hash值相同的key,此…

关于四篇GNN论文的阅读笔记PPT:包括GATNE,AM-GCN,HGSL和coGSL

关于四篇GNN论文的阅读笔记PPT:包括GATNE,AM-GCN,HGSL和coGSL 前言GATNEAM-GCNHGSLcoGSL 前言 这里的PPT主要是在跟Graph Transformer一起的: 【图-注意力笔记,篇章1】Graph Transformer:包括Graph Trans…

2024第六届环境科学与可再生能源国际会议能源 (ESRE 2024) 即将召开!

2024第六届环境科学与可再生能源国际会议 能源 (ESRE 2024) 即将举行 2024 年 6 月 28 日至 30 日在德国法兰克福举行。ESRE 2024 年 旨在为研究人员、从业人员和专业人士提供一个论坛 从工业界、学术界和政府到研究和 发展,环境科学领域的专…

网站首屏优化 | 提升首屏的几个简单手段

前言 在用户反馈中,诸如「白屏」、「加载慢」、「打不开」等关键词频繁出现,这些词汇直观地揭示了应用程序在实际操作中遭遇的技术挑战。 根据 Statista 的报告,应用加载速度的延迟超过 3 秒,用户流失率可增加 53% 。此外&#…

Linux :环境基础开发工具

目录: 1. Linux 软件包管理器 yum 1. 什么是软件包 2. 查看软件包 3. 如何安装软件 4. 如何卸载软件 2. Linux开发工具 1. Linux编辑器-vim的基本概念 2. vim使用 3. vim的基本操作 4. vim正常模式命令集 5. vim末行模式命令集 6. 简单vim配置 3. Linux编译器-gcc/…

【Java程序设计】【C00379】基于(JavaWeb)Springboot的旅游服务平台(有论文)

【C00379】基于(JavaWeb)Springboot的旅游服务平台(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发&#xff0c…

深度学习知识【CSPNet网络详解】

CSPNet的贡献 1.增强了CNN的学习能力,能够在轻量化的同时保持准确性。 2.降低计算瓶颈。 3.降低内存成本。 CSPNet介绍 在神经网络推理过程中计算量过高的问题是由于网络优化中的梯度信息重复导致的。CSPNet通过将梯度的变化从头到尾地集成到特征图中&#xff0c…