MySQL学习-函数(八)

157 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情

前言

上篇我们又学习了一部分MySQL中的函数。有兴趣的小伙伴可以阅读(# MySQL学习-函数(七))。
下面继续学习MySQL中的函数。

日期和时间函数

日期的格式化与解析

格式化: 日期 => 字符串
解析: 字符串 => 日期

函数用法
DATE_FORMAT(date,fmt)按照字符串fmt格式化日期date值
TIME_FORMAT(time,fmt)按照字符串fmt格式化时间time值
GET_FORMAT(date_type,format_type)返回日期字符串的显示格式
STR_TO_DATE(str, fmt)按照字符串fmt对str进行解析,解析为一个日期

函数中fmt参数常用的格式符如下:

格式符说明
%Y4位数字表示年份
%y表示两位数字表示年份
%M月名表示月份(January,…)
%m两位数字表示月份(01,02,03。。。)
%b缩写的月名(Jan.,Feb.,…)
%c数字表示月份(1,2,3,…)
%D英文后缀表示月中的天数(1st,2nd,3rd,…)
%d两位数字表示月中的天数(01,02…)
%e数字形式表示月中的天数(1,2,3,4,5…)
%H两位数字表示小数,24小时制(01,02…)
%h和%I两位数字表示小时,12小时制(01,02…)
%k数字形式的小时,24小时制(1,2,3)
%l数字形式表示小时,12小时制(1,2,3,4…)
%i两位数字表示分钟(00,01,02)
%S和%s两位数字表示秒(00,01,02…)
%W一周中的星期名称(Sunday…)
%a一周中的星期缩写(Sun.,Mon.,Tues.,…)
%w以数字表示周中的天数(0=Sunday,1=Monday…)
%j以3位数字表示年中的天数(001,002…)
%U以数字表示年中的第几周,(1,2,3。。)其中Sunday为周中第一天
%u以数字表示年中的第几周,(1,2,3。。)其中Monday为周中第一天
%T24小时制
%r12小时制
%pAM或PM
%%表示%

示例一

SELECT DATE_FORMAT(CURDATE(), '%Y-%M-%D'), DATE_FORMAT(NOW(), '%Y-%m-%d')
FROM DUAL
DATE_FORMAT(CURDATE(), '%Y-%M-%D')DATE_FORMAT(NOW(), '%Y-%m-%d')
2022-April-28th2022-04-28

示例二

SELECT TIME_FORMAT(CURTIME(), '%H:%i:%s'), TIME_FORMAT(CURTIME(), '%h-%i-%S')
FROM DUAL
TIME_FORMAT(CURTIME(), '%H:%i:%s')TIME_FORMAT(CURTIME(), '%h-%i-%S')
19:34:1407-34-14

示例三

SELECT DATE_FORMAT(NOW(), '%Y-%M-%D %h:%i:%s %W %w %T %r')
FROM DUAL
TIME_FORMAT(CURTIME(), '%H:%i:%s')
2022-April-28th 07:37:34 Thursday 4 19:37:34 07:37:34 PM

示例四

SELECT STR_TO_DATE('2022-April-28th 07:37:34 Thursday 4', '%Y-%M-%D %h:%i:%s %W %w')
FROM DUAL
STR_TO_DATE('2022-April-28th 07:37:34 Thursday 4', '%Y-%M-%D %h:%i:%s %W %w')
2022-04-28 07:37:34

GET_FORMAT函数中date_typeformat_type参数取值如下:

日期类型格式化类型返回的格式化字符串
DATEUSA%m.%d.%Y
DATEJIS%Y-%m-%d
DATEISO%Y-%m-%d
DATEEUR%d.%m.%Y
DATEINTERNAL%Y.%m.%d
TIMEUSA%h:%i:%s %p
TIMEJIS%H:%i:%s
TIMEISO%H:%i:%s
TIMEEUR%H.%i.%s
TIMEINTERNAL%H%i%s
DATETIMEUSA%Y-%m-%d %H.%i.%s
DATETIMEJIS%Y-%m-%d %H:%i:%s
DATETIMEISO%Y-%m-%d %H:%i:%s
DATETIMEEUR%Y-%m-%d %H.%i.%s
DATETIMEINTERNAL%Y%m%d%H%i%s

示例五

SELECT GET_FORMAT(DATE, 'USA')
FROM DUAL
GET_FORMAT(DATE, 'USA')
%m.%d.%Y4

示例六

可以利用GET_FORMAT返回格式。

SELECT DATE_FORMAT(CURDATE(), GET_FORMAT(DATE, 'USA'))
FROM DUAL
DATE_FORMAT(CURDATE(), GET_FORMAT(DATE, 'USA'))
04.28.2022

上面这种方式,可以方便使用格式。

今天学习完了日期时间函数,明天继续。