学习java的时候有DateFormat,里面有日期格式化的格式,什么'%Y'代表四位的年之类的,总是记不住,去查文档吧,一大堆介绍让我感到眼花缭乱的。后来又接触到mysql的date_format函数,又是一大堆,而且大部分的格式我也用不到,所以在这里做个简洁的记载,顺便写几个例子吧。
mysql的date_format函数功能:可以让我们获取日期的任意一部分,包括年月日时分秒以及微秒以及今天是周几等信息。
格式:date_format(要处理的日期,格式)
以“2017-10-09 00:53:34”日期为例来进行说明:
格式 | 含义 |
%Y/%y | 4位年/2位年 |
%m | 月(01-12) |
%d | 月(01-12) |
%H/%h/%I | 24小时制(00-23)/12小时制(01-12)/12小时制(01-12) |
%i | 分钟(00-59) |
%S或者%s | 秒(00-59) |
也不用疑惑,一句sql就搞定:
<span style="color:#000000">SELECT date_format('2017-10-09 00:53:34','%Y/%y-%m-%d %H/%h/%I:%i:%S/%s') mydate</span>
结果:
有了这个函数,基本可以不用再去记忆那些种类繁多的函数了。比如:
select DAYOFWEEK('2017-10-09')[作用:返回参数date是星期几,1=星期日,2=星期一,3=星期二......]可以使用select date_format('2017-10-09','%W')达到同样的效果;
select YEAR('2017-10-09')[作用:得到日期的年份]可以使用select date_format('2017-10-09','%Y')达到同样的效果;
select DAYOFYEAR('2017-10-09')[作用:得到日期在当年是第几天]可以使用select date_format('2017-10-09','%j')做到等等。
是不是感觉mysql的date_format函数既简单又强大,还省去了记忆大量日期函数的繁琐,赶紧get起来吧。
mysql里面的日期是如何运算的,也不用记忆太多,也没有太复杂,确切的来说,掌握mysql的日期运算只需要掌握一个函数就可以了。你道是哪个函数?date_add(要处理的日期,interval 数值或数值表达式 类型)
什么意思呢?日期的运算,很明显,乘除就不用考虑了,日期只有加减运算,日期的加法可以使用date_add函数,日期的减法可以使用date_sub函数,而日期的加法或减法可以通过改变参数“数值或数值表达式”的正负而间接的通过一个函数来实现,所以前边我才说“掌握mysql的日期运算只需要掌握一个函数就可以了”。
那么,就来看看date_add这个函数吧,date_sub是类似的,我们下面就以date_add这个函数来做例子了。
首先,看一下date_add函数的格式:date_add(要处理的日期,interval 数值或数值表达式 类型),它的作用就是对第一个参数“要处理的日期”进行加上或减去一天或者一个小时或者一年或者两天或者两个小时.......。
然后,我们看一下关于date_add函数的几个问题:
1.是加上还是减去?
这要取决于“数值或数值表达式”的正负,为正则是加上,为负则是减去
2.加上多少?
这个取决于“数值或数值表达式”的大小,比如是10,就是加上10
3.是加上10天还是加上10年啊?
这个取决于参数后边指定的类型,常用的类型有:
year | 年 |
month | 月 |
day | 日 |
hour | 时 |
minute | 分 |
second | 秒 |
week | 周 |
看下下面的例子:
SELECT date_format(date_add(CURRENT_TIMESTAMP(),interval 1 YEAR),'%Y-%m-%d %H:%i:%s') a, date_format(date_add(CURRENT_TIMESTAMP(),interval 1 MONTH),'%Y-%m-%d %H:%i:%s') b, date_format(date_add(CURRENT_TIMESTAMP(),interval 1 DAY),'%Y-%m-%d %H:%i:%s') c, date_format(date_add(CURRENT_TIMESTAMP(),interval 1 HOUR),'%Y-%m-%d %H:%i:%s') d, date_format(date_add(CURRENT_TIMESTAMP(),interval 1 MINUTE),'%Y-%m-%d %H:%i:%s') e, date_format(date_add(CURRENT_TIMESTAMP(),interval 1 SECOND),'%Y-%m-%d %H:%i:%s') f, date_format(date_add(CURRENT_TIMESTAMP(),interval 1 WEEK),'%Y-%m-%d %H:%i:%s') g
执行结果如图:
好了,通过这个函数就可以在mysql中对日期进行加减运算了。