MySQL中日期的查询和日期的运算操作

本文详细介绍了MySQL中日期时间的加减操作、时间差计算、当前时间查询、时间戳转换及时间截取方法,包括使用ADDDATE、SUBDATE、DATEDIFF等函数进行日期运算,以及now、curdate、curtime等函数获取当前时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、日期的操作

1. 日期时间加法

ADDDATE(date,INTERVAL expr unit) DATE_ADD(date,INTERVAL expr unit)

  • date 要操作的日期时间,可以是日期类型也可以是日期字符串
  • NTERVAL: MySQL关键字 ,意思是间隔,间隙
  • unit 操作的单元,年,月,日,时,分,秒对应YEAR,MONTH,DAY,HOUR,MINUTE,SECOND
  • expr 想要增加或减少的时间单位。expr>0,增加,expr<0减少
	SELECT DATE_ADD('2020-06-06',INTERVAL '2' YEAR);
	---     2023-06-06

2. 日期时间的减法

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

	SELECT DATE_SUB('2020-06-06',INTERVAL '3' YEAR);
	---     2017-06-06

3. 日期时间的时间差

DATEDIFF(expr1, expr2) 计算两个表达式之间的时间差(expr1-expr2 )天

SELECT
	DATEDIFF(
		'2018-4-23',
		'2018-4-12 12:12:23'),
	DATEDIFF(
		now(),
		DATE_ADD(now(), INTERVAL 12 DAY)
	)

  11                 -12

二、日期的查询

1. 查询当前时间日期

  • now() 获取 当前日期和时间 // 2020-04-12 18:18:57
  • curdate() 当前日期,// 2020-04-12
  • curtime() 当前时间 // 18:18:57

2. 查询时间戳

  • unix_timestamp([date]) 将日期转化为时间戳,参数可以是日期时间类型 now() 也可以是时间字符串 '2020-02-12’
	mysql> select from_unixtime(unix_timestamp('2020:4:8'));
			+------------------------------------------------+
			|	 from_unixtime(unix_timestamp('2020:4:8'))   |
		    +------------------------------------------------+
			|	2020-04-08 00:00:00                          |

  • from_unixtime(timestamp [,pattern]) 根据format格式化时间戳

3. 时间截取(返回对应的日期,时间或者数字)

expr :时间字符串,日期字符串或者日期时间类型

  • date(expr) // 如果解析失败返回Null,返回日期类型date
  • time(expr) //返回时间类型 time
  • year(expr) //返回数字
  • month(expr) //返回数字【1-12】
  • day(expr) //返回数字【1-31】
  • hour(expr) //返回数字【0-23】
  • minute(expr) //返回数字【0-59】
  • last_day(date) //返回最后一天 ,返回date类型 //2018-04-30
  • to_days(expr) //返回到公元0年一月一日的总天数
  • date_format(expr,pattern) //时间截取,返回字符串
	select date(now()),time('2018-04-19 11:10:11'),year(now()),to_days(now());
		2018-04-19        11:10:11                      2018      737168

	select DATE_FORMAT(now(),'%Y%m%d');
	-- 20181101
	select DATE_FORMAT('2019-01-02','%Y-%m-%d')
	-- 2019-01-02

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Monika、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值