服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL中常用的日期函数

MySQL中常用的日期函数

2023-05-07 01:04未知服务器之家 Mysql

日期在我们平时在MySQL查询中是非常常用的一种类型,日期类型的值又会因不同场景而存储的格式不一致,在我们查询的时候,就需要经过转换到指定格式来查询我们想要的数据,这时候,日期函数就能给我带来极大的便捷,下面

MySQL中常用的日期函数

日期在我们平时在MySQL查询中是非常常用的一种类型,日期类型的值又会因不同场景而存储的格式不一致,在我们查询的时候,就需要经过转换到指定格式来查询我们想要的数据,这时候,日期函数就能给我带来极大的便捷,下面,罗列一下常用的日期函数,方便我们记忆并使用。

NOW()

now()是获取当前日期加时间,如:

select NOW()  //2023-03-29 07:41:37

CURDATE()

CURDATE()获取当前日期,如:

select CURDATE()  //2023-03-29

CURTIME()

CURTIME()获取当前时间,如:

select CURTIME()  //07:44:17

DATE()

DATE()将字符串转为日期

select DATE('2023-03-29')  //2023-03-29

YEAR()

YEAR()取日期年份,如:

select YEAR('2023-03-29')  //2023
select YEAR(DATE('2023-03-29')) //2023

YEARWEEK()

YEARWEEK()返回年份+周数,如:

select YEARWEEK(DATE('2023-03-29'))  //202313

YEARWEEK有两个参数,第一个是日期时间,第二个是指定一周中的哪一天开始

WEEKOFYEAR()

WEEKOFYEAR()取当前周数,如:

select WEEKOFYEAR(DATE('2023-03-29'))  //13

DAYOFYEAR()

DAYOFYEAR()取当前年份的天数,如:

select DAYOFYEAR(DATE('2023-03-29'))  //88

MONTH()、DAYOFMONTH()

MONTH()取日期月数,如:

select MONTH(DATE('2023-03-29'))  //3

DAYOFMONTH()取当前月份的天数,如:

select DAYOFMONTH(DATE('2023-03-29'))  //29

DAY()、DAYOFWEEK()、LAST_DAY()

DAY()取日期天数,如:

select DAY(DATE('2023-03-29'))   //29

DAYOFWEEK()一周中的第几天,从星期日开始。

select DAYOFWEEK(DATE('2023-03-29'))  //4

LAST_DAY()月最后一天日期

select LAST_DAY(DATE('2023-03-29'))  //2023-03-31

ADDDATE、DATE_ADD、SUBDATE、DATE_SUB,日期加减函数

ADDDATE()ADDDATE(date,INTERVAL expr unit)DDDATE(date,days)两种参数,默认是天,在指定日期加指定天数

MySQL中常用的日期函数

select ADDDATE(CURRENT_DATE,1)  //2023-03-30

DATE_ADD()则只有DATE_ADD(date,INTERVAL expr unit)。

SUBDATE()ADDDATE()参数一样,作用相反,在指定日期减去指定天数。

这里的unit有一下几种:

类型

含义

用法示例

YEAR

DATE_ADD(CURRENT_DATE(),INTERVAL 1 YEAR)

MONTH

DATE_ADD(CURRENT_DATE(),INTERVAL 1 MONTH)

DAY

DATE_ADD(CURRENT_DATE(),INTERVAL 1 DAY)

HOUR

DATE_ADD(CURRENT_DATE(),INTERVAL 1 HOUR)

MINUTE

DATE_ADD(CURRENT_DATE(),INTERVAL 1 MINUTE)

SECOND

DATE_ADD(CURRENT_DATE(),INTERVAL 1 SECOND)

YEAR_MONTH

年和月

DATE_ADD(CURRENT_DATE(),INTERVAL 1 YEAR_MONTH)或DATE_ADD(CURRENT_DATE(),INTERVAL ‘1 1’ YEAR_MONTH)

DAY_HOUR

日和小时

DATE_ADD(NOW(),INTERVAL 1 DAY_HOUR)或DATE_ADD(NOW(),INTERVAL ‘1 1’ DAY_HOUR)

DAY_MINUTE

日和分钟

DATE_ADD(NOW(),INTERVAL 1 DAY_MINUTE)或DATE_ADD(NOW(),INTERVAL ‘1 1’ DAY_MINUTE)

DAY_SECOND

日和秒钟

DATE_ADD(NOW(),INTERVAL 1 DAY_SECOND)或DATE_ADD(NOW(),INTERVAL ‘1 1’ DAY_SECOND)

HOUR_MINUTE

时和分

DATE_ADD(NOW(),INTERVAL 1 HOUR_MINUTE)或DATE_ADD(NOW(),INTERVAL ‘1 1’ HOUR_MINUTE)

HOUR_SECOND

时和秒

DATE_ADD(NOW(),INTERVAL 1 HOUR_SECOND)或DATE_ADD(NOW(),INTERVAL ‘1 1’ HOUR_SECOND)

MINUTE_SECOND

分和秒

DATE_ADD(NOW(),INTERVAL 1 MINUTE_SECOND)或DATE_ADD(NOW(),INTERVAL ‘1 1’ MINUTE_SECOND)

DATEDIFF(),TIMESTAMPDIFF(),时间之差

DATEDIFF返回两个日期之间的天数,如:

select DATEDIFF('2023-03-29','2023-03-28')  //1

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)返回指定类型的值。

类型

含义

YEAR

QUARTER

季度

MONTH

WEEK

DAY

HOUR

小时

MINUTE

SECOND

如:

select TIMESTAMPDIFF(HOUR,'2023-03-28 12:00:00','2023-03-29 12:00:00')  //24  //小时

DATE_FORMAT 日期格式化

DATE_FORMAT(date,format)返回指定格式化日期。
格式有一下多种:

格式

含义

%a

缩写星期名

%b

缩写月名

%c

月,数值

%D

带有英文前缀的月中的天

%d

月的天,数值(00-31)

%e

月的天,数值(0-31)

%f

微秒

%H

小时 (00-23)

%h

小时 (01-12)

%I

小时 (01-12)

%i

分钟,数值(00-59)

%j

年的天 (001-366)

%k

小时 (0-23)

%l

小时 (1-12)

%M

月名

%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 位

常用格式:

select DATE_FORMAT(now(),'%Y-%m-%d')  //2023-03-29
select DATE_FORMAT(now(),'%Y%m%d') //20230329
select DATE_FORMAT(now(),'%Y%m') //202303
select DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s') //2023-03-29 13:37:21

UNIX_TIMESTAMP 时间戳函数

UNIX_TIMESTAMP()返回一个unix时间戳,从’1970-01-01 00:00:00’开始的秒数。

select UNIX_TIMESTAMP() //1680068449
select UNIX_TIMESTAMP('2023-03-29 12:00:00') //1680062400

FROM_UNIXTIME

MySQL中常用的日期函数

FROM_UNIXTIME将时间戳转换为指定日期格式的字符串,有unix_timestamp和format两个参数,format的取值范围与DATE_FORMAT一致。

select FROM_UNIXTIME(1680068449)  //2023-03-29 13:40:49
select FROM_UNIXTIME(1680068449,'%Y-%m-%d') //2023-03-29

延伸 · 阅读

精彩推荐
  • MysqlMySql数据库查询中的特殊命令

    MySql数据库查询中的特殊命令

    本文给大家介绍了MySql数据库查询中的特殊命令,包括mysql的安装,特殊查询语句,非常不错,具有参考借鉴价值,需要的朋友可以参考下...

    疏桐2852020-08-19
  • Mysqlmysql 8.0 错误The server requested authentication method unknown to the client解决方法

    mysql 8.0 错误The server requested authentication method unknown to the client解

    在本篇文章里小编给大家整理的是关于mysql 8.0 错误The server requested authentication method unknown to the client解决方法,有此需要的朋友们可以学习下。...

    caigan的技术博客10182020-12-01
  • MysqlMySQL存储过程的深入讲解(in、out、inout)

    MySQL存储过程的深入讲解(in、out、inout)

    这篇文章主要给大家介绍了关于MySQL存储过程(in、out、inout)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习...

    zzzf986362021-03-01
  • MysqlUbuntu16.04 server下配置MySQL,并开启远程连接的方法

    Ubuntu16.04 server下配置MySQL,并开启远程连接的方法

    这篇文章主要介绍了Ubuntu16.04 server下配置MySQL,并开启远程连接的方法,非常具有实用价值,需要的朋友可以参考下。 ...

    SpringLife3642020-07-11
  • MysqlMySQL学习笔记之数据的增、删、改实现方法

    MySQL学习笔记之数据的增、删、改实现方法

    这篇文章主要介绍了MySQL学习笔记之数据的增、删、改实现方法,简单介绍了mysql实现数据的增、删、改相关语法与使用技巧,需要的朋友可以参考下...

    hbiao685572020-06-23
  • MysqlMySQL插入json问题

    MySQL插入json问题

    今天小编就为大家分享一篇关于MySQL插入json问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    no-965502019-06-20
  • MysqlMySQL中查询json格式的字段实例详解

    MySQL中查询json格式的字段实例详解

    这篇文章主要给大家介绍了关于MySQL中查询json格式字段的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    帅得令人着迷的饶少7812021-04-20
  • Mysqlmysql数据库之索引详细介绍

    mysql数据库之索引详细介绍

    大家好,本篇文章主要讲的是mysql数据库之索引详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览...

    一定会去到彩虹海的麦当10182022-02-15