当前位置: 首页 > news >正文

[MySQL]日期和时间函数

文章目录
  • 1 获取日期、时间
      • CURDATE() ,CURRENT_DATE()
      • CURTIME() , CURRENT_TIME()
      • NOW() / SYSDATE() / CURRENT_TIMESTAMP() / LOCALTIME() / LOCALTIMESTAMP()
      • UTC_DATE()
      • UTC_TIME()
      • 代码示例
  • 2 日期与时间戳的转换
      • UNIX_TIMESTAMP()
      • UNIX_TIMESTAMP(date)
      • FROM_UNIXTIME(timestamp)
      • 代码示例
  • 3 获取月份、星期、星期数、天数等函数
      • YEAR(date) / MONTH(date) / DAY(date)
      • HOUR(time) / MINUTE(time) / SECOND(time)
      • MONTHNAME(date)
      • DAYNAME(date)
      • WEEKDAY(date)
      • QUARTER(date)
      • WEEK(date) , WEEKOFYEAR(date)
      • DAYOFYEAR(date)
      • DAYOFMONTH(date)
      • DAYOFWEEK(date)
      • 代码示例
  • 4 日期的操作函数
      • EXTRACT(type FROM date)
  • 5 时间和秒钟转换的函数
      • TIME_TO_SEC(time)
      • SEC_TO_TIME(seconds)
      • 代码示例
  • 6 计算日期和时间的函数
      • DATE_ADD(datetime, INTERVAL expr type), ADDDATE(date,INTERVAL expr type)
      • DATE_SUB(date,INTERVAL expr type),SUBDATE(date,INTERVAL expr type)
      • ADDTIME(time1,time2)
      • SUBTIME(time1,time2)
      • DATEDIFF(date1,date2)
      • TIMEDIFF(time1, time2)
      • FROM_DAYS(N)
      • TO_DAYS(date)
      • LAST_DAY(date)
      • MAKEDATE(year,n)
      • MAKETIME(hour,minute,second)
      • PERIOD_ADD(time,n)
      • 代码示例
  • 7 日期的格式化与解析
      • DATE_FORMAT(date,fmt)
      • TIME_FORMAT(time,fmt)
      • GET_FORMAT(date_type,format_type)
      • STR_TO_DATE(str, fmt)
      • 非GET_FORMAT 函数中fmt参数常用的格式符:
      • GET_FORMAT函数中date_type和format_type参数取值如下:
      • 代码示例


1 获取日期、时间

CURDATE() ,CURRENT_DATE()

返回当前日期,只包含年、月、日

CURTIME() , CURRENT_TIME()

返回当前时间,只包含时、分、秒

NOW() / SYSDATE() / CURRENT_TIMESTAMP() / LOCALTIME() / LOCALTIMESTAMP()

返回当前系统日期和时间

UTC_DATE()

返回UTC(世界标准时间)日期

UTC_TIME()

返回UTC(世界标准时间)时间

代码示例
SELECTCURDATE(),CURRENT_DATE(),CURTIME(),NOW(),SYSDATE(),UTC_DATE(),UTC_TIME()
FROM DUAL;

在这里插入图片描述

2 日期与时间戳的转换

UNIX_TIMESTAMP()

以UNIX时间戳的形式返回当前时间。SELECT UNIX_TIMESTAMP() - >1634348884

UNIX_TIMESTAMP(date)

将时间date以UNIX时间戳的形式返回。

FROM_UNIXTIME(timestamp)

将UNIX时间戳的时间转换为普通格式的时间

代码示例
SELECTUNIX_TIMESTAMP(),UNIX_TIMESTAMP('2021-10-01 12:12:32'),FROM_UNIXTIME(1635173853),FROM_UNIXTIME(1633061552)
FROM DUAL;

在这里插入图片描述

3 获取月份、星期、星期数、天数等函数

YEAR(date) / MONTH(date) / DAY(date)

返回具体的日期值

HOUR(time) / MINUTE(time) / SECOND(time)

返回具体的时间值

MONTHNAME(date)

返回月份:January,…

DAYNAME(date)

返回星期几:MONDAY,TUESDAY…SUNDAY

WEEKDAY(date)

返回周几,注意,周1是0,周2是1,…,周日是6

QUARTER(date)

返回日期对应的季度,范围为1~4

WEEK(date) , WEEKOFYEAR(date)

返回一年中的第几周

DAYOFYEAR(date)

返回日期是一年中的第几天

DAYOFMONTH(date)

返回日期位于所在月份的第几天

DAYOFWEEK(date)

返回周几,注意:周日是1,周一是2,…,周六是7

代码示例
SELECTYEAR(CURDATE()),MONTH(CURDATE()),DAY(CURDATE()),HOUR(CURTIME()),MINUTE(NOW()),SECOND(SYSDATE()),MONTHNAME('2021-10-26'),DAYNAME('2021-10-26'),WEEKDAY('2021-10-26'),QUARTER(CURDATE()),WEEK(CURDATE()),DAYOFYEAR(NOW()),DAYOFMONTH(NOW()),DAYOFWEEK(NOW())
FROM DUAL;

在这里插入图片描述

4 日期的操作函数

EXTRACT(type FROM date)

返回指定日期中特定的部分,type指定返回的值

在这里插入图片描述

SELECTEXTRACT(SECOND FROM NOW()),EXTRACT(DAY FROM NOW()),EXTRACT(HOUR_MINUTE FROM NOW()),EXTRACT(QUARTER FROM '2021-05-12')
FROM DUAL;

在这里插入图片描述

5 时间和秒钟转换的函数

TIME_TO_SEC(time)

将 time 转化为秒并返回结果值。转化的公式为: 小时*3600+分钟 *60+秒

SEC_TO_TIME(seconds)

将 seconds 描述转化为包含小时、分钟和秒的时间

代码示例
SELECTTIME_TO_SEC(CURTIME()),SEC_TO_TIME(53515)
FROM DUAL;

在这里插入图片描述

6 计算日期和时间的函数

DATE_ADD(datetime, INTERVAL expr type), ADDDATE(date,INTERVAL expr type)

返回与给定日期时间相差INTERVAL时间段的日期时间

type的取值:
在这里插入图片描述

SELECTNOW(),DATE_ADD(NOW(),INTERVAL 1 YEAR),DATE_ADD(NOW(),INTERVAL -1 YEAR)
FROM DUAL;

在这里插入图片描述

SELECTDATE_ADD(NOW(), INTERVAL 1 DAY) AS col1,DATE_ADD('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col2,ADDDATE('2021-10-21 23:32:12',INTERVAL 1 SECOND) AS col3,DATE_ADD('2021-10-21 23:32:12',INTERVAL '1_1' MINUTE_SECOND) AS col4,DATE_ADD(NOW(), INTERVAL -1 YEAR) AS col5, #可以是负数DATE_ADD(NOW(), INTERVAL '1_1' YEAR_MONTH) AS col6 #需要单引号
FROM DUAL;

在这里插入图片描述

DATE_SUB(date,INTERVAL expr type),SUBDATE(date,INTERVAL expr type)

返回与date相差INTERVAL时间间隔的日期

type的取值:
在这里插入图片描述

SELECTNOW(),DATE_SUB(NOW(),INTERVAL 1 YEAR)
FROM DUAL;

在这里插入图片描述

ADDTIME(time1,time2)

返回time1加上time2的时间。当time2为一个数字时,代表的是秒 ,可以为负数

SUBTIME(time1,time2)

返回time1减去time2后的时间。当time2为一个数字时,代表的是 秒 ,可以为负数

DATEDIFF(date1,date2)

返回date1 - date2的日期间隔天数

TIMEDIFF(time1, time2)

返回time1 - time2的时间间隔

FROM_DAYS(N)

返回从0000年1月1日起,N天以后的日期

TO_DAYS(date)

返回日期date距离0000年1月1日的天数

LAST_DAY(date)

返回date所在月份的最后一天的日期

MAKEDATE(year,n)

针对给定年份与所在年份中的天数返回一个日期,即指定年份的第几天

MAKETIME(hour,minute,second)

将给定的小时、分钟和秒组合成时间并返回

PERIOD_ADD(time,n)

返回time加上n后的时间

代码示例
SELECTADDTIME(NOW(),20),SUBTIME(NOW(),30),SUBTIME(NOW(),'1:1:3'),DATEDIFF(NOW(),'2021-10-01'),TIMEDIFF(NOW(),'2021-10-25 22:10:10'),FROM_DAYS(366),TO_DAYS('0000-12-25'),LAST_DAY(NOW()),MAKEDATE(YEAR(NOW()),32),MAKETIME(10,21,23),PERIOD_ADD(20200101010101,10)
FROM DUAL;`在这里插入代码片`

在这里插入图片描述

SELECT# 日期转化为数值CURDATE(),CURDATE() + 0,CURTIME() + 0,NOW() + 0
FROM DUAL;

在这里插入图片描述

7 日期的格式化与解析

格式化:日期 —> 字符串
解析: 字符串 —> 日期
这里指的是日期的显式格式化和解析

DATE_FORMAT(date,fmt)

按照字符串fmt格式化日期date值

TIME_FORMAT(time,fmt)

按照字符串fmt格式化时间time值

GET_FORMAT(date_type,format_type)

返回日期字符串的显示格式

既不是格式化也不是解析,用于得到日期的格式,如:'%Y-%M-%D'

STR_TO_DATE(str, fmt)

按照字符串fmt对str进行解析,解析为一个日期

非GET_FORMAT 函数中fmt参数常用的格式符:

在这里插入图片描述

GET_FORMAT函数中date_type和format_type参数取值如下:

在这里插入图片描述

代码示例
#格式化:
SELECTDATE_FORMAT(CURDATE(),'%Y-%M-%D'),DATE_FORMAT(NOW(),'%Y-%m-%d'),TIME_FORMAT(CURTIME(),'%h:%i:%S'),DATE_FORMAT(NOW(),'%Y-%M-%D %h:%i:%S %W %w %T %r')
FROM DUAL;

在这里插入图片描述

#解析:格式化的逆过程
SELECTSTR_TO_DATE('2021-October-25th 11:37:30 Monday 1','%Y-%M-%D %h:%i:%S %W %w'),GET_FORMAT(DATE,'USA'),DATE_FORMAT(CURDATE(),GET_FORMAT(DATE,'USA'))
FROM DUAL;

在这里插入图片描述

相关文章:

  • 计算机网络体系的形成
  • leetcode977. 有序数组的平方
  • springBoot整合task
  • 【STL】手撕 string类
  • llama.cpp部署通义千问Qwen-14B
  • 五分钟带你看完黑客设备
  • WPF窗口样式的比较
  • Chrome显示分享按钮
  • 如何解决谷歌浏览器无法更新、谷歌翻译无法使用问题
  • JavaSE基础50题:7. 写一个方法返回参数二进制中1的个数(3种方法!)
  • go自定义端口监听停用-------解决端口被占用的问题
  • Vue3 setup语法糖
  • 用Java写一个王者荣耀游戏
  • 用C++和python混合编写数据采集程序?
  • 【1day】华天软件 OAworkFlowService接口SQL注入漏洞学习
  • #Java异常处理
  • 【剑指offer】让抽象问题具体化
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • CSS盒模型深入
  • docker容器内的网络抓包
  • js正则,这点儿就够用了
  • PHP 7 修改了什么呢 -- 2
  • python学习笔记-类对象的信息
  • Spring框架之我见(三)——IOC、AOP
  • storm drpc实例
  • TCP拥塞控制
  • windows-nginx-https-本地配置
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 分布式熔断降级平台aegis
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • ​MySQL主从复制一致性检测
  • # centos7下FFmpeg环境部署记录
  • #Lua:Lua调用C++生成的DLL库
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (LeetCode 49)Anagrams
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (笔试题)合法字符串
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (未解决)macOS matplotlib 中文是方框
  • (转)memcache、redis缓存
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • *p++,*(p++),*++p,(*p)++区别?
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .net下简单快捷的数值高低位切换
  • @ModelAttribute 注解
  • [1525]字符统计2 (哈希)SDUT
  • [AIGC codze] Kafka 的 rebalance 机制
  • [Android Studio 权威教程]断点调试和高级调试