百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

MySQL日期时间函数

toyiye 2024-06-21 12:12 9 浏览 0 评论

MYSQL五大类函数,前面已经介绍了聚合函数、字符串函数和数值型函数,还有时间日期函数和控制流函数,这篇介绍一下日期时间函数,日期和时间函数主要用于处理日期和时间,其中包括获取当前时间的函数、获取当前日期的函数、返回年份的函数和返回日期的函数等。

这一篇主要介绍常用的日期和时间函数,然后后面会给出常用的计算(本)月初、月末,本周、上周初末、昨日今日等时间的表达式。


函数名称

作用

CURDATE和CURRENT_DATE

两个函数作用相同,返回当前系统的日期值

CURTIME和CURRENT_TIME

两个函数作用相同,返回当前系统的时间值

NOW和SYSDATE

两个函数作用相同,返回当前系统的日期和时间值

MONTHNAME

获取指定日期中的月份英文名称

DAYNAME

获取指定日期对应的星期几的英文名称

DAYOFWEEK

获取指定日期对应的一周的索引位置值

DAYOFYEAR

获取指定曰期是一年中的第几天

DAYOFMONTH

获取指定日期是一个月中是第几天

WEEK

获取指定日期是一年中的第几周

MONTH

获取指定日期中的月份

YEAR

获取年份

DATE_ADD和ADDDATE

两个函数功能相同,都是向日期添加指定的时间间隔

DATE_SUB和SUBDATE

两个函数功能相同,都是向日期减去指定的时间间隔

ADDTIME

时间加法运算,在原始时间上添加指定的时间

SUBTIME

时间减法运算,在原始时间上减去指定的时间

DATEDIFF

获取两个日期之间间隔

DATE_FORMAT

格式化指定的日期,根据参数返回指定格式的值

WEEKDAY

获取指定日期在一周内的对应的工作日索引


【CURDATE和CURRENT_DATE】

CURDATE和CURRENT_DATE获取系统当前日期。可以通过"CURDATE()+0"将当前日期值转换为数值型。

SELECT CURDATE(),CURRENT_DATE(),CURDATE()+0


【CURTIME和CURRENT_TIME】

CURTIME和CURRENT_TIME获取系统当前时间。通过"CURRENT_TIME()+0"将当前时间值转换为数值型。

SELECT CURTIME(),CURRENT_TIME(),CURTIME()+0

【NOW和SYSDATE】

NOW和SYSDATE获取当前系统的日期和时间。NOW()函数始终获取的是SQL语句开始执行的时间,而 SYSDATE()函数则是动态获取的实时时间。

SELECT NOW(),SYSDATE()


【MONTHNAME】

使用MONTHNAME()函数返回指定日期中月份的名称。

SELECT
  birthday,
  MONTHNAME( birthday ) 
FROM
  wangfalin;

【DAYNAME】

使用DAYNAME()函数返回指定日期的工作日名称。

SELECT
  birthday,
  DAYNAME( birthday ) 
FROM
  wangfalin;


【DAYOFWEEK】

使用DAYOFWEEK()函数返回日期对应的周索引,星期天为开始1。

SELECT
  birthday,
  DAYOFWEEK(birthday) 
FROM
  wangfalin;


【DAYOFYEAR】

DAYOFYEAR()函数返回是一年中的第几天,范围为1~366。

SELECT
  birthday,
  DAYOFYEAR(birthday) 
FROM
  wangfalin;

【DAYOFMONTH】

DAYOFMONTH()函数返回是一个月中的第几天,范围为1~31。

SELECT
  birthday,
  DAYOFMONTH(birthday) 
FROM
  wangfalin;


【WEEK】

WEEK()函数计算日期 date 是一年中的第几周。WEEK(date,mode)函数允许指定星期是否起始于周日或周一,以及返回值的范围是否为 0~52 或 1~53。

  • date是要获取周数的日期。
  • mode是一个可选参数,用于确定周数计算的逻辑。

模式

一周的第一天

范围

0

星期日

0-53

1

星期一

0-53

2

星期日

1-53

3

星期一

1-53

4

星期日

0-53

5

星期一

0-53

6

星期日

1-53

7

星期一

1-53

SELECT
  birthday,
  WEEK(birthday,3) 
FROM
  wangfalin;


【MONTH】

MONTH(date)函数返回指定日期对应的月份,范围为1~12。

SELECT
  birthday,
  MONTH(birthday) 
FROM
  wangfalin;

【YEAR】

YEAR()函数从指定日期值中来获取年份值。

SELECT
  birthday,
  YEAR(birthday) 
FROM
  wangfalin;


【DATE_ADD和ADDDATE】

DATE_ADD(date,INTERVAL expr type)和ADDDATE(date,INTERVAL expr type) 两个函数的作用相同,都是用于执行日期的加运算。

  • date是DATE或DATETIME的起始值
  • INTERVAL expr type是要添加到起始日期值的间隔值

Type 值

MICROSECOND

SECOND

MINUTE

HOUR

DAY

WEEK

MONTH

QUARTER

YEAR

SECOND_MICROSECOND

MINUTE_MICROSECOND

MINUTE_SECOND

HOUR_MICROSECOND

HOUR_SECOND

HOUR_MINUTE

DAY_MICROSECOND

DAY_SECOND

DAY_MINUTE

DAY_HOUR

YEAR_MONTH

SELECT DATE_ADD('2021-05-24 23:26:59',INTERVAL 1 SECOND) AS C1,
DATE_ADD('2021-05-24 23:26:59',INTERVAL '1:1' MINUTE_SECOND) AS C2,
ADDDATE('2021-05-24 23:26:59',INTERVAL -1 DAY) AS C3;


【DATE_SUB和SUBDATE】

DATE_SUB(date,INTERVAL expr type)和SUBDATE(date,INTERVAL expr type)两个函数作用相同,都是执行日期的减法运算。

  • date 是 DATE 或 DATETIME 的起始值
  • expr 是一个字符串,用于确定从起始日期减去的间隔值。type 是 expr 可解析的间隔单位,例如DAY,HOUR等
SELECT DATE_SUB('2021-05-24 23:26:59',INTERVAL 1 SECOND) AS C1,
DATE_SUB('2021-05-24 23:26:59',INTERVAL '1:1' MINUTE_SECOND) AS C2,
SUBDATE('2021-05-24 23:26:59',INTERVAL -1 DAY) AS C3;

【ADDTIME、SUBTIME】

ADDTIME(time,expr)函数用于执行时间的加、减法运算。添加expr到time并返回结果。

SELECT ADDTIME('2021-05-24 21:26:59','1:2:3')

SELECT SUBTIME('2021-05-24 21:26:59','1:2:3')


【DATEDIFF】

DATEDIFF(date1,date2)返回起始时间date1和结束时间date2之间的天数。date1和date2为日期或date-time表达式。计算时只用到这些值的日期部分。

SELECT DATEDIFF('2021-11-30','2021-11-29') AS COL1,
DATEDIFF('2021-11-30','2021-12-15') AS col2;

【DATE_FORMAT】

DATE_FORMAT(date,format)函数是根据format指定的格式显示date值。

  • date:是要格式化的有效日期值
  • format:是由预定义的说明符组成的格式字符串,每个说明符前面都有一个百分比字符(%)

%a

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

%b

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

%c

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

%D

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

%d

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

%e

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

%f

微秒(000000 …999999)

%H

以 2 位数表示 24 小时(00~23)

%h, %I

以 2 位数表示 12 小时(01~12)

%i

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

%j

—年中的天数(001~366)

%k

以 24 小时(0~23)表示

%l

以12小时(1~12)表示

%M

月份名称(January~December)

%m

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

%p

上午(AM) 或下午(PM)

%r

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

%S, %s

以 2 位数形式表示秒(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 位数形式表示年份

%%

%一个文字字符

SELECT
  birthday,
  DATE_FORMAT(birthday,'%Y%m %M')
FROM
  wangfalin;


【WEEKDAY】

WEEKDAY(d)返回d对应的工作日索引。0 表示周一,1 表示周二,……,6 表示周日。

SELECT
  birthday,
  WEEKDAY(birthday)
FROM
  wangfalin;



【常用日期表示方法】

【今天】

SELECT 
DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00') AS '今天开始',
DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') AS '今天结束';

【昨天】

SELECT 
DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d 00:00:00') AS '昨天开始',
DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d 23:59:59') AS '昨天结束';

【上周】

SELECT 
DATE_FORMAT( DATE_SUB( DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 1 WEEK), '%Y-%m-%d 00:00:00') AS '上周一',
DATE_FORMAT( SUBDATE(CURDATE(), WEEKDAY(CURDATE()) + 1), '%Y-%m-%d 23:59:59') AS '上周末';


【本周】

SELECT 
DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), '%Y-%m-%d 00:00:00') AS '本周一',
DATE_FORMAT( DATE_ADD(SUBDATE(CURDATE(), WEEKDAY(CURDATE())), INTERVAL 6 DAY), '%Y-%m-%d 23:59:59') AS '本周末';

【上月】

SELECT 
DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01 00:00:00') AS '上月初',
DATE_FORMAT( LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)), '%Y-%m-%d 23:59:59') AS '上月末';


【本月】

SELECT 
DATE_FORMAT( CURDATE(), '%Y-%m-01 00:00:00') AS '本月初',
DATE_FORMAT( LAST_DAY(CURDATE()), '%Y-%m-%d 23:59:59') AS '本月末';


End

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码