SQL干货:Mysql日期时间函数

日期和时间函数部分也是我们日常工作中使用频率比较高的一部分。这一篇我们主要讲讲Mysql里面的日期时间相关的函数,不同数据库之间基本相同,只会有个别函数的差异。大家掌握一个数据库的,其他的遇到不会的,直接查就可以了。

01. 获取当前时刻时间

获取当前时刻的时间就是获取程序运行的那一刻与时间相关的数据,比如年月日、时分秒等信息。

1.1返回当前时刻的日期和时间

返回当前时刻的日期和时间在ESql中用的是now函数,直接在select后面写上now函数即可,具体代码如下:

selectnow

运行上面代码就会得到你程序运行这一刻所处的年月日、时分秒的信息,比如:2019-12-25 22:47:37。

1.2获取当前时刻的日期

前面的now函数获取的是当前时刻的日期和时间,我们有的时候可能只需要当前时刻的日期部分,并不需要时间部分,这个时候在在Sql中将now函数换成curdate函数,就是获取当前时刻的日期部分,具体代码如下:

selectcurdate

通过运行上面的代码,我们得到了当前时刻的日期部分:2019-12-25

curdate函数是直接获取当前时刻的日期部分,我们也可以先通过now函数获取当前时刻的日期时间,然后再通过date函数将日期时间转化为日期部分,具体代码如下:

selectdate(now)

通过运行上面的代码,会得到与curdate函数相同的结果。

我们也可以只获取日期中的年,使用的是year函数,具体代码如下:

通过运行上面的代码,最后得到的结果为2019。

我们也可以只获取日期中的月,使用的是month函数,具体代码如下:

通过运行上面的代码,最后得到的结果为12。

我们也可以只获取日期中的日,使用的是day函数,具体代码如下:

selectday(now)

通过运行上面的代码,最后得到的结果为25。

1.3获取当前时刻的时间

我们除了有只获取当前时刻的日期的需求外,我们还有只获取当前时刻的时间需求。如果我们想只获取当前时刻的时间,只需要把只获取当前时刻日期的curdate函数换成curtime函数即可,具体代码如下:

selectcurtime

通过运行上面的代码,就可以获取当前时刻的时间部分:22:47:37。

我们也可以先通过now函数获取当前时刻的日期时间,然后再通过time函数将日期时间转化为时间部分,具体代码如下:

selecttime(now)

我们也可以只获取时间中的小时,使用的是hour函数,具体代码如下:

selecthour(now)

通过运行上面的代码,最后得到的结果为22。

我们也可以只获取时间中的分钟,使用的是minute函数,具体代码如下:

selectminute(now)

通过运行上面的代码,最后得到的结果为47。

我们也可以只获取时间中的秒,使用的是second函数,具体代码如下:

selectsecond(now)

通过运行上面的代码,最后得到的结果为37。

1.4获取当前时刻的周数

上面我们讲了如何获取当前时刻的日期时间、日期、时间这三部分。这一节我们再看下如何获取当前时刻所属的周数。我们一般会将全年分为52周(365天/7),有的时候也可能是53周,如果我们想看下当前时刻是全年中的第几周,可以使用weekofyear函数,具体代码如下:

selectweekofyear(now)

通过运行上面的代码,最后得到的结果为52。

除了获取当前是全年的第几周以外,我们还需要获取当天是一周内的周几。在Sql中使用的dayofweek函数,具体代码如下:

selectdayofweek(now)

通过运行上面的代码,最后得到结果为5,2019年12月25日应该是周四哈,为什么结果是5呢,这是因为该函数中一周是从周日开始的,也就是周日对应的是1,周一对应的是2,以此类推,所以周四对应的是5。

02. 日期时间格式转换

我们知道同一个日期时间会有多种不同的表示方式,有的时候需要在不同格式之间相互转换。在Sql中我们用的是date_format函数,date_format函数格式如下:

date_format(datetime,format)

datetime表示要被转换的具体的日期时间,format表示要转换成的格式,可选的格式如下:

主题
格式
描述
年%Y4位数的年月%b月份对应的英文缩写月%M月份对应的英文全称月%m01-12的月月%c1-12的月份数值日%d01-31的某月里面的第几天日%e1-31的某月里面的第几天日%D用th后缀表示某月中的第几天日%j001-366的一年中的第几天周%a星期几对应的英文缩写周%W星期几对应的英文全称时%H00-23的小时时%h01-12的小时分%i00-59的分钟秒%S秒(00-59)秒%f微秒时分秒%T返回当前的时分秒, 24-小时 (hh:mm:ss)
selectdate_format("2019-12-25 22:47:37","%Y-%m-%d")

通过运行上面的代码,就会返回4位数的年、01-12的月、01-31的天,三者之间且用-分隔开来,即2019-12-25。

推荐阅读