【MySQL:只修改日期时段的年月日,不修改时间】

一、实现前提:知识储备

1、DATE()和TIME()

DATE():提取日期/时间表达式的年月日部分

TIME() :提取时间或日期时间表达式的时分秒部分

2、NOW()和SYSDATE()

两者都是获取当前时间的功能。不同的是开始获取的时间点不一样:

  • NOW():语句执行时获取时间
  • SYSDATE():该函数执行时获取时间

这一区别可以使用sleep()函数测得:

SELECT NOW(),SLEEP(2),SYSDATE(),NOW(),SLEEP(2),SYSDATE()

3、INTERVAL

  1. 当函数使用时,即interval(),为比较函数,如:interval(10,1,3,5,7);结果4;

    原理:10为被比较数,后面1,3,5,7为比较数,将后面四个依次与10比较,看后面数字组有多少个少于10,则返回其个数。前提是后面数字组为从小到大排列,否则返回结果0。

  2. 当关键词使用时,表示为设置时间间隔/时间量。

    理解:

    INTERVAL 1 YEAR:代表的是1年的时间量

    INTERVAL 1 MONTH:代表的是1个月的时间量

    INTERVAL 1 day:代表的是1天的时间量

    INTERVAL 1 hour:代表的是1小时的时间量

    INTERVAL 1 minute:代表的是1分钟的时间量

    INTERVAL 1 second:代表的是1秒的时间量


    那么:SYSDATE() - INTERVAL 1 YEAR 的含义就是:当前时间减去1年的时间量,即表示一年前的当前时间。

4、ADDTIME(date1 ,date2)

返回 date1 + date2 的时间。

  • date1:是一个时间或日期时间表达式;
  • date2:是一个时间表达式。
-- 当前时间加一天
ADDTIME(SYSDATE() ,INTERVAL 1 day)

二、实现

有了前面的函数储备后,实现只修改时间字段的年月日不修改时间就非常容易了。

【示例】请修改student表中的time字段,将其在原有基础上增加一年的时间,请保持原有的月、日、时间不改变。

--方式一:适用于少量的变动,例如增加一年、增加一天、减少12小时等
update student
set
time=time+INTERVAL 1 YEAR

--方式二:适用于整体的变动,例如将年月日整体修改为指定的日期
update student
set
time=ADDTIME(DATE(time) +INTERVAL 1 YEAR,TIME(time))
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BUG_GUB

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

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

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

打赏作者

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

抵扣说明:

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

余额充值