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,‘%’字符要求在格式指定符之前。

记得点赞关注哟!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

海外媒体宣发:企业最牛出海最巨有“料”的几个新闻媒体

海外媒体宣发:企业最牛出海最巨有“料”的几个新闻媒体 1.雅虎财经(Yahoo Finance)雅虎网(英文名字:Yahoo,NASDAQ:YHOO)是美国有名的互联网技术门户网,都是20世纪初互联…

充钱也不能任性,今天用百度AI又骂街了

今天在用文心一言的时候又翻车了,应该是又骂街了。 cao,充钱也不能任性啊,不能手贱去看百度的新功能,垃圾的一批。 本来付费用了用4.0,感觉Chat功能还是可以的,不论是简单的代码,还是一些通用的…

抖音电商“达人客服”产品上线啦!超多作者邀你一起“321上客服”!

有问题别自己克服,来抖音电商找“达人客服” 当代年轻人购物,正在从机智省变成理智购。越来越多的人在达人直播间购物,看重的不止是优惠力度,还有服务保障。 为了帮助达人更好地服务用户,抖音电商上线了「达人客服」…

MySQL数据库------------探索高级SQL查询语句(一)

目录 一、常用查询 1.1按关键字排序 1.2简单的select条件查询(where) 二、排序 2.1升序排列 2.2降序排序 三、order by 查询结果排序 ①order by还可以结合where进行条件过滤,筛选地址是哪里的学生按分数降序排列 ②查询学生信息先按hobbyid降序排列&#…

如何解决Modbus转Profinet网关通信不稳定或数据丢失问题

接到现场反映,在配置Modbus转Profinet网关时,出现Modbus转Profinet网关(XD-MDPN100)通信不稳定或数据丢失的问题,就这个问题特做出答疑。 解决Modbus转Profinet网关(XD-MDPN100)通信不稳定或数据…

【区块链】C语言编程实现三叉Merkle树

目录 1. Merkle树简介2. 构建Merkle树3. 生成SPV路径4. 验证SPV路径5. 三叉Merkle树创建、SPV生成及验证总程序6. 程序运行结果 1. Merkle树简介 如上图所示,Merkle 树的叶子节点为交易序列,对每一笔交易进行 Hash(SHA 256算法) 之…

STM32F10X开发环境的搭建

一、keil软件安装 找到keil软件包,解压缩,找到keil5安装软件: 鼠标右键选择以管理员权限运行。点击next,直到安装结束。 安装完成后在桌面会出现keil5软件图标: 然后再安装相应的芯片支持包:我们用的是stm…

C语言:文件操作的详解(看完一定有更深刻的理解)

目录 前言 程序文件 文件的打开和关闭 流 标准流 文件的顺序读写 写文件 fputc函数 fputs函数 fprintf函数 读文件 fgetc函数 fgets函数 fscanf函数 printf/fprintf/sprintf scanf/fscanf/sscanf 文件的随机读写 fseek函数 ftell函数 rewind函数 大多数人用…

【数据库管理操作】Mysql 创建学生数据库及对数据表进行修改

MySQL 创建学生成绩数据库 1.创建数据库 create database studentscore;创建完成之后,如果需要使用该数据,使用use命令 use studentscore;创建表前查看当前数据库中包含的表 show tables; 2.创建bclass表 create table bclass( class_id char(8) …

深度学习入门1——Optimization

Methods of optimization Stochastic Gradient Descent (SGD) use mini-batch (32/64/128) to do gradient descent SGD Momentum continue moving in the general direction as the previous iterations Build up “velocity” as a running mean of gradients Rho giv…

全国河流湖库公开数据及应用实践

关于全国河流湖口的数据,通常指的是各条河流流入湖泊或海洋的位置及其相关的水文、地理信息。这类数据包括但不限于以下几个方面: 1. 地理位置:每条河流的出海口或流入湖泊的具体经纬度坐标。 2. 水文特征:如湖口水位、流量、径…

【数据库】表的约束

目录 一、非空约束 二、主键约束 三、外键约束 四、检查约束 五、唯一性约束 一、非空约束 每个字段都要有一个是否为nul值的选择,这就是对数据表中将来的数据提出的约束条件。null(允许空值):表示数值未确定,并不是数字“0”或字符“…

Avalonia笔记2 -数据集合类控件

学习笔记&#xff1a; 1. DataGrid 笔记1中已经记录&#xff1b; 2. ItemsControl 属性&#xff1a; ItemsSource&#xff1a;数据源 ItemsControl.ItemTemplate&#xff1a;单项数据模板&#xff0c;内部使用<DataTemplate> 示例&#xff1a; <ItemsContr…

学习使用xbox手柄控制小乌龟节点移动

使用xbox手柄控制小乌龟&#xff0c;首先要下载joy功能包&#xff0c;发布sensor_msgs话题也就是手柄和ros通信的话题。 下载的步骤就根据官方文档即可 joy/Tutorials/ConfiguringALinuxJoystick - ROS Wiki 这里我提供一下具体步骤 第一步 安装joy 首先安装对应系统版本的…

第十四届蓝桥杯(C/C++ 大学B组)

试题 A&#xff1a;日期统计 #include <bits/stdc.h> using namespace std;const int numbers[100] {5, 6, 8, 6, 9, 1, 6, 1, 2, 4, 9, 1, 9, 8, 2, 3, 6, 4, 7, 7, 5, 9, 5, 0, 3, 8, 7, 5, 8, 1, 5,8, 6, 1, 8, 3, 0, 3, 7, 9, 2, 7, 0, 5, 8, 8, 5, 7, 0, 9, 9, 1, …

全局UI方法-弹窗一警告弹窗(AlertDialog)

1、描述 显示警告弹窗组件&#xff0c;可设置文本内容与响应回调。 2、属性 名称参数类型参数描述showAlertDialogParamWithConfirm | AlertDialogParamWithButtons定义并显示AlertDialog组件。 2.1、AlertDialogParamWithConfirm对象说明&#xff1a; 参数名称参数类型必填…

已注册的商标别忘了续展,新注可能难下证!

近期普推知产老杨遇到好几个网友和看过多个案例&#xff0c;以前商标名称可以申请注册下来&#xff0c;但是换字体注册不下来了&#xff0c;有的是不想续展想直接换字体申请注册&#xff0c;但是也没有下来。 这些商标名称主要是存在禁止注册或缺显&#xff0c;比如“柳林”以前…

对下载软件/文件进行校验的工具(Checksum and GPG)

前言 之前装软件一直都没有验证安装文件的习惯&#xff0c;信息安全意识不高&#xff0c;碰巧最近没啥事&#xff0c;微微写篇文章记录下校验工具&#xff08;互联网http、https、ftp 服务并没有那么安全&#xff0c;是可以被劫持篡改。老装软件选手了&#xff0c;是该养成个校…

Mac上的Gatekeeper系统跟运行时保护

文章目录 问题&#xff1a;无法打开“xxx.xxx”&#xff0c;因为无法验证开发者。macOS无法验证此App是否包含恶意软件。如何解决&#xff1f; 参考资料门禁运行时保护 问题&#xff1a;无法打开“xxx.xxx”&#xff0c;因为无法验证开发者。macOS无法验证此App是否包含恶意软件…

瑞_23种设计模式_观察者模式

文章目录 1 观察者模式&#xff08;Observer Pattern&#xff09;1.1 介绍1.2 概述1.3 观察者模式的结构1.4 观察者模式的优缺点1.5 观察者模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK中提供的观察者模式实现 ★4.1 Observable类4.2 Obse…