本小白最近学习MySQL,因为之前是已经有学过微软大佬的SQL Server所以自认为理解的还是稍快的(滑鸡),好了说正事。
今天在写一个查询语句时,需要用到 一个日期函数:DATEPART( )
因为SQL Server是有这个函数的,所以首先想到了这个函数,结果发现在MySQL中这个函数是不存在的
赶紧去百度,在 API 中查询琢磨了半天终于搞明白了!!
在MySQL中,虽然没有 DATEPART( ) 函数,但是可以用 DATE_FORMAT( )函数来代替,两种函数的用法基本一致,接下来记录一下这两个函数的使用。
DATEPART ( ) 函数
DATEPART( )函数:用来返回代表指定日期的指定日期部分的整数。
语法如下:
DATEPART( 日期缩写 , 日期 ) 例如 DATEPART( dd , 2019-03-08 )
解释:简单来说就是,这个函数需要传入两个参数,第一个参数是你要提取的部分(比如:yy,mm,dd 等),第二个参数当然就是你要从哪个日期中取出你需要的时间啦
下面将列出日期和日期缩写的表:
日期 | 缩写 |
年(year) | yy或yyyy |
季度(quarter) | qq或q |
月(month) | mm或m |
年的第几天(dayofyear) | dy或y |
天(day) | dd或d |
周(week) | wk或ww |
一周的第几天(weekday) | dw |
小时(Hour) | hh |
分钟(minute) | mi或n |
秒(second) | ss或s |
毫秒(millisecond) | ms |
代码演示阶段:
SELECT DATEPART(yy,'2019-03-08 18:50') 返回:2019 SELECT DATEPART(mm,'2019-03-08 18:50') 返回:3 SELECT DATEPART(dd,'2019-03-08 18:50:25') 返回:8 SELECT DATEPART(qq,'2019-03-08 18:50:25') 返回:1 SELECT DATEPART(dy,'2019-03-08 18:50:25') 返回:67 SELECT DATEPART(ww,'2019-03-08 18:50:25') 返回:10 --这个返回这周第几天需要注意一下: --2019-03-08实际是星期五但是返回了6 --是因为国际标准每周日是每星期的第一天,周六则是每星期的最后一天 --所以星期五则返回6 SELECT DATEPART(dw,'2019-03-08 18:50:25') 返回:6 SELECT DATEPART(hh,'2019-03-08 18:50:25') 返回:18 SELECT DATEPART(mi,'2019-03-08 18:50:25') 返回:50 SELECT DATEPART(ss,'2019-03-08 18:50:25') 返回:25 --因为我没输入毫秒所以默认是0 SELECT DATEPART(ms,'2019-03-08 18:50:25') 返回:0
好了到这里关于 DATEPART() 函数的介绍基本已经说完了,接下来说说DATE_FORMAT()函数
DATE_FORMAT()函数
DATE_FORMAT( )函数:用来从指定的日期中返回你指定的日期格式。
语法为:
#正好和DATEPART()相反 #DATEPART()中的参数第一个是指定格式,第二个是指定日期 DATE_FORMAT( 指定日期 , 指定格式 ) 例如 DATE_FORMAT('2019-03-09 09:56:35' , '%Y')
这里会发现指定的格式('%Y')在我上面写的表中是没有的,当然,DATE_FORMAT是有一个专门的格式表
在这里重新列出来可用在DATE_FORMAT()函数的格式表
如下表:
格式符 | 说明 |
%a | 工作日的缩写名称 (Sun..Sat) |
%b | 月份的缩写名称 (Jan..Dec) |
%c | 月份,数字形式(0..12) |
%D | 带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, ...) |
%d | 该月日期, 数字形式 (00..31) |
%e | 该月日期, 数字形式(0..31) |
%f | 微秒 (000000..999999) |
%H | 小时(00..23) |
%h | 小时(01..12) |
%I | 小时 (01..12) |
%i | 分钟,数字形式 (00..59) |
%j | 一年中的第几天 (001..366) |
%k | 小时 (0..23) |
%l(小写L) | 小时 (1..12) |
%M | 月份名称 (January..December) |
%m | 月份, 数字形式 (00..12) |
%p | 上午(AM)或下午( PM) |
%r | 获得时间 ,例如 (10: 11: 43 AM) |
%S | 秒 (00..59) |
%s | 秒 (00..59) |
%T | 时间 , 例如 (10:11:43 不加AM或PM) |
%U | 周 (00..53), 其中周日为每周的第一天 |
%u | 周 (00..53), 其中周一为每周的第一天 |
%V | 周 (01..53), 其中周日为每周的第一天 ; 和 %X同时使用 |
%v | 周 (01..53), 其中周一为每周的第一天 ; 和 %x同时使用 |
%W | 工作日名称 (周日..周六) |
%w | 一周中的每日 (0=周日..6=周六) |
%X | 该周的年份,其中周日为每周的第一天, 数字形式,4位数;和%V同时使用 |
%x | 该周的年份,其中周一为每周的第一天, 数字形式,4位数;和%v同时使用 |
%Y | 年份, 数字形式,4位数 |
%y | 年份, 数字形式 (2位数) |
%% | ‘%’文字字符 |
代码演示阶段:
--因为格式字符太多所以这次只演示一部分常用的,其他的自行实验 SELECT DATE_FORMAT('2019-03-09 10:18:37','%Y') 返回:2019 SELECT DATE_FORMAT('2019-03-09 10:18:37','%y') 返回:19 SELECT DATE_FORMAT('2019-03-09 10:18:37','%c') 返回:3 SELECT DATE_FORMAT('2019-03-09 10:18:37','%d') 返回:09 SELECT DATE_FORMAT('2019-03-09 10:18:37','%e') 返回:9 SELECT DATE_FORMAT('2019-03-09 10:18:37','%r') 返回:10:18:37 AM SELECT DATE_FORMAT('2019-03-09 10:18:37','%T') 返回:10:18:37 SELECT DATE_FORMAT('2019-03-09 10:18:37','%m') 返回:03
注:这里还有一点要说明,DATE_FORMAT()函数中还可以将指定的格式组合起来写,写法如下:
--比如这样,格式中我们写成 '%Y-%m-%d' SELECT DATE_FORMAT('2019-03-09 10:18:37','%Y-%m-%d') 返回:2019-03-09 --注意这里的 '-' 连接符可以随意写自己想怎么写怎么写,也可以写成 SELECT DATE_FORMAT('2019-03-09 10:18:37','%Y年%m月%d日') 返回:2019年03月09日 --反正自己怎么看顺眼就怎么写 --自此本篇博客就此结束 --希望各位看官大爷觉得有帮助的记得点点赞手留余香 --如有不足的地方也欢迎在评论区评论