MySQL 日期函数大全(更新完成)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 日期函数大全(更新完成)相关的知识,希望对你有一定的参考价值。


作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主

文章目录

  • ​​sql​​
  • ​​ADDDATE()​​
  • ​​ADDTIME()​​
  • ​​ADDTIME()​​
  • ​​curdate()​​
  • ​​CURRENT_DATE()​​
  • ​​CURRENT_TIME()​​
  • ​​CURRENT_TIMESTAMP()​​
  • ​​curtime()​​
  • ​​date()​​
  • ​​DATEDIFF()​​
  • ​​date_add()​​
  • ​​DATE_FORMAT()​​
  • ​​date_sub()​​
  • ​​day()​​
  • ​​DAYNAME()​​
  • ​​DAYOFMONTH()​​
  • ​​DAYOFWEEK()​​
  • ​​DAYOFYEAR()​​
  • ​​EXTRACT()​​
  • ​​FROM_DAYS()​​
  • ​​hour()​​
  • ​​LAST_DAY()​​
  • ​​LOCALTIME()​​
  • ​​LOCALTIMESTAMP()​​
  • ​​makedate()​​
  • ​​maketime()​​
  • ​​MICROSECOND()​​
  • ​​minute()​​
  • ​​MONTHNAME()​​
  • ​​MONTH()​​
  • ​​now()​​
  • ​​PERIOD_ADD()​​
  • ​​period_diff()​​
  • ​​quarter()​​
  • ​​second()​​
  • ​​SEC_TO_TIME()​​
  • ​​STR_TO_DATE()​​
  • ​​subdate()​​
  • ​​subtime()​​
  • ​​sysdate()​​
  • ​​time()​​
  • ​​time_format()​​
  • ​​time_to_sec()​​
  • ​​timediff()​​
  • ​​timestamp()​​
  • ​​TIMESTAMPDIFF()​​
  • ​​to_days()​​
  • ​​week()​​
  • ​​WEEKDAY()​​
  • ​​WEEKOFYEAR()​​
  • ​​year()​​
  • ​​YEARWEEK()​​

sql

-- phpMyAdmin SQL Dump
-- version 4.8.5
-- https://www.phpmyadmin.net/
--
-- 主机: localhost
-- 生成日期: 2022-11-06 18:14:31
-- 服务器版本: 5.7.26
-- PHP 版本: 7.3.4

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- 数据库: `a`
--

-- --------------------------------------------------------

--
-- 表的结构 `customers`
--

CREATE TABLE `customers` (
`id` int(11) NOT NULL COMMENT 主键id,
`name` varchar(200) COLLATE utf8_unicode_ci NOT NULL COMMENT 名字,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 时间
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- 转存表中的数据 `customers`
--

INSERT INTO `customers` (`id`, `name`, `time`) VALUES
(1, 12346789, 2022-11-06 08:16:11);

--
-- 转储表的索引
--

--
-- 表的索引 `customers`
--
ALTER TABLE `customers`
ADD PRIMARY KEY (`id`);

--
-- 在导出的表使用AUTO_INCREMENT
--

--
-- 使用表AUTO_INCREMENT `customers`
--
ALTER TABLE `customers`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 主键id, AUTO_INCREMENT=2;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

ADDDATE()

SELECT ADDDATE("2017-06-15",INTERVAL 10 DAY);

解析:增加10天到这个日期上2017-06-15

MySQL

ADDTIME()

SELECT ADDTIME("2011-11-11 11:11:11",5);

解析:增加五秒钟到第一个参数的日期上"2011-11-11 11:11:11"

MySQL

ADDTIME()

SELECT ADDTIME("2020-06-15 09:34:21", "2:10:5");

解析:增加 2 小时, 10 分钟, 5 秒到第一个参数的日期上.

MySQL

curdate()

SELECT curdate();

解析:显示当前日期

MySQL

CURRENT_DATE()

SELECT CURRENT_DATE();

解析:显示当前日期

MySQL

CURRENT_TIME()

SELECT CURRENT_TIME();

解析:显示当前时间

MySQL

CURRENT_TIMESTAMP()

SELECT CURRENT_TIMESTAMP();

解析:显示当前日期+时间

MySQL

curtime()

SELECT curtime();

解析:显示当前时间

MySQL

date()

SELECT DATE("2017-06-15");

解析:从日期或日期时间表达式中提取日期值

MySQL

DATEDIFF()

SELECT DATEDIFF(2001-01-01,2001-02-02)

解析:计算日期 d1->d2 之间相隔的天数

MySQL

date_add()

SELECT date_add("2017-06-15",INTERVAL 10 DAY);

解析:加10天到第一个参数日期上

MySQL

SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL 15 MINUTE);

解析:加15分钟到第一个参数日期上

MySQL

SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL -3 HOUR);

解析:加-3小时到第一个参数日期上

MySQL

SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL -3 MONTH);

解析:加-3个月到第一个参数的日期上

MySQL

DATE_FORMAT()

SELECT DATE_FORMAT(2011-11-11 11:11:11,%Y-%m-%d %r)

解析:以年-月-日这种格式输出。%r代码am还是pm。am表示凌晨和上午,pm表示下午和晚上。(0:00-12:00)。

MySQL

SELECT DATE_FORMAT(2011-11-11 23:11:11,%Y-%m-%d %r)

解析:以年-月-日这种格式输出。%r代码am还是pm。am表示凌晨和上午,pm表示下午和晚上。12:01-24:00)。

MySQL

date_sub()

SELECT time,date_sub(time,INTERVAL 2 DAY) as timedate from customers;

解析:date_sub(time,INTERVAL 2 DAY)的意思是当前time字段时间减去两天.就成了2022-11-04 16:16:11.原本是2022-11-06 16:16:11

MySQL

day()

SELECT day("2017-06-15");

解析:输出日,不输出年 月

MySQL

DAYNAME()

SELECT DAYNAME(2011-11-11 11:11:11);

看这个日期是星期几呢?2011-11-11 11:11:11

MySQL

DAYOFMONTH()

SELECT DAYOFMONTH(2011-11-11 11:11:11);

输出这个日期是2011-11-11 11:11:11是11月的第几天

MySQL

DAYOFWEEK()

SELECT DAYOFWEEK(2011-11-11 11:11:11);

解析:这个(2011-11-11 11:11:11)日期 day今天是星期几,1 星期日,2 星期一,以此类推

MySQL

DAYOFYEAR()

SELECT DAYOFYEAR(2011-11-11 11:11:11)

解析:计算2011年11月11日这个日期是2011年的第几天

MySQL

EXTRACT()

SELECT EXTRACT(MINUTE FROM 2011-11-11 11:33:11)

计算2011-11-11 11:33:11这个日期时间的分钟时多少呢?

MySQL

FROM_DAYS()

SELECT FROM_DAYS(1111);

解析:计算从 0000 年 1 月 1 日开始 1111天后的日期

MySQL

hour()

SELECT hour(1:2:3);

解析: t 中的小时值。小时1,2分钟,3秒

MySQL

LAST_DAY()

SELECT LAST_DAY("2017-06-20");

解析:给定日期的那一月份(6月份)的最后一天

MySQL

LOCALTIME()

SELECT LOCALTIME()

解析:输出当前日期和时间

MySQL

LOCALTIMESTAMP()

SELECT LOCALTIMESTAMP()

解析:返回当前日期和时间

MySQL

makedate()

SELECT makedate(2017, 3);

解析:2017年第三天是什么日期

MySQL

maketime()

SELECT maketime(11,35,4);

解析:组合时间,参数分别为第一个参数:小时、第二个参数:分钟、第三个参数:秒

MySQL

MICROSECOND()

SELECT MICROSECOND("2017-06-20 09:34:00.000023");

解析:日期参数所对应的微秒数

MySQL

minute()

SELECT minute("1:2:3");

解析:输出分钟。第一个参数小时。第二个参数分钟。第三个参数秒

MySQL

MONTHNAME()

SELECT MONTHNAME(2011-11-11 11:11:11);

解析:输出月的信息(英文)

MySQL

MONTH()

SELECT MONTH(2011-11-11 11:11:11);

解析:返回日期中的月份值,1 到 12

MySQL

now()

SELECT now();

解析:当前日期和时间

MySQL

PERIOD_ADD()

SELECT PERIOD_ADD(201703,5);

解析:第一个参数意思:2017年3月增加五个月

MySQL

period_diff()

SELECT period_diff(201710, 201703);

解析:第一个参数2017年10月减去第二个参数2017年3月的值

MySQL

quarter()

SELECT quarter(2011-11-11 11:11:11);

解析:输出日期时间是第几季节,返回 1 到 4.代表春夏秋冬四个季节.

MySQL

second()

SELECT second("1:2:3");

解析:输出秒

MySQL

SEC_TO_TIME()

SELECT SEC_TO_TIME(4320)

解析:将以秒为单位的时间转换为时分秒的格式

MySQL

STR_TO_DATE()

SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");

解析:将字符串转变为日期

MySQL

subdate()

SELECT subdate(2011-11-11 11:11:11, 1);

解析:第一个参数的日期时间减去第二个参数的天数的日期

MySQL

subtime()

SELECT subtime(2011-11-11 11:11:11, 5);

解析:第一个参数的日期时间减去第二个参数的秒数:5

MySQL

sysdate()

SELECT sysdate();

解析:输出当前日期和时间

MySQL

time()

SELECT time("2011-11-11 19:30:10");

解析:输出时间部分,不输出日期部分

MySQL

time_format()

SELECT time_format(11:11:11,%r);

解析:看第一个参数的时间是am还是pm

MySQL

time_to_sec()

SELECT time_to_sec(1:12:00);

解析:将时间转换为秒

MySQL

timediff()

SELECT timediff("13:10:11", "13:10:10");

解析:第一个参数的时间减去第二个参数的时间

MySQL

timestamp()

SELECT timestamp("2017-07-23",  "13:10:11");

解析:单个参数时,函数返回日期或日期时间表达式;有2个参数时,将参数加和

MySQL

SELECT TIMESTAMP(2003-12-31 12:00:00,12:00:00);

解析:有2个参数时,将参数加和

MySQL

TIMESTAMPDIFF()

SELECT TIMESTAMPDIFF(DAY,2003-02-01,2003-05-01);

解析: // 计算两个时间相隔多少天

MySQL

SELECT TIMESTAMPDIFF(MONTH,2003-02-01,2003-05-01);

解析:// 计算两个时间相隔多少月

MySQL

SELECT TIMESTAMPDIFF(YEAR,2002-05-01,2001-01-01);

解析: 计算两个时间相隔多少年

MySQL

to_days()

SELECT to_days(0001-01-01 01:01:01);

解析:计算日期距离 0000 年 1 月 1 日的天数

MySQL

week()

SELECT week(2011-11-11 11:11:11);

解析:计算日期是本年(2011)的第几个星期,范围是 0 到 53

MySQL

WEEKDAY()

SELECT WEEKDAY("2017-06-15");

解析:日期是星期几,0 表示星期一,1 表示星期二。。。。。

MySQL

WEEKOFYEAR()

SELECT WEEKOFYEAR(2011-11-11 11:11:11)

解析:计算日期 是本年的第几个星期,范围是 0 到 53

MySQL

year()

SELECT YEAR("2017-06-15");

解析:输出年份

MySQL

YEARWEEK()

SELECT YEARWEEK("2017-06-15");

解析:输出年份及第几周(0到53)

MySQL


以上是关于MySQL 日期函数大全(更新完成)的主要内容,如果未能解决你的问题,请参考以下文章

mysql字符串函数大全(更新完成)

MySQL日期时间函数大全[转]

转载MySQL日期时间函数大全

转载MySQL日期时间函数大全

MySQL日期时间函数大全

mysql 计算两个日期的时间差函数小时分钟格式