一起养成写作习惯!这是我参与「掘金日新计划 · 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参数常用的格式符如下:
| 格式符 | 说明 |
|---|
| %Y | 4位数字表示年份 |
| %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为周中第一天 |
| %T | 24小时制 |
| %r | 12小时制 |
| %p | AM或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-28th | 2022-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:14 | 07-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_type和format_type参数取值如下:
| 日期类型 | 格式化类型 | 返回的格式化字符串 |
|---|
| DATE | USA | %m.%d.%Y |
| DATE | JIS | %Y-%m-%d |
| DATE | ISO | %Y-%m-%d |
| DATE | EUR | %d.%m.%Y |
| DATE | INTERNAL | %Y.%m.%d |
| TIME | USA | %h:%i:%s %p |
| TIME | JIS | %H:%i:%s |
| TIME | ISO | %H:%i:%s |
| TIME | EUR | %H.%i.%s |
| TIME | INTERNAL | %H%i%s |
| DATETIME | USA | %Y-%m-%d %H.%i.%s |
| DATETIME | JIS | %Y-%m-%d %H:%i:%s |
| DATETIME | ISO | %Y-%m-%d %H:%i:%s |
| DATETIME | EUR | %Y-%m-%d %H.%i.%s |
| DATETIME | INTERNAL | %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 |
上面这种方式,可以方便使用格式。
今天学习完了日期时间函数,明天继续。