MySQL日期格式化的多种方式(非常详细,附带实例)
MySQL 中的 DATE_FORMAT(date,format) 函数根据 format 指定的格式显示 date 值。
format 格式如下表所示:
【实例】使用 DATE_FORMAT() 函数格式化输出日期和时间值,SQL 语句如下:
TIME_FORMAT(time,format) 函数根据表达式 format 的要求显示时间 time。表达式 format 指定了显示的格式。因为 TIME_FORMAT(time,format) 只处理时间,所以 format 只使用时间格式。
【实例】使用 TIME_FORMAT() 函数格式化输入时间值,SQL 语句如下:
GET_FORMAT(val_type, format_type) 返回日期和时间字符串的显示格式:
GET_FORMAT 根据两个值类型组合返回的字符串显示格式如下表所示:
【实例】使用 GET_FORMAT() 函数显示不同格式化类型下的格式字符串,SQL 语句如下:
【实例】在 DATE_FORMAT() 函数中,使用 GET_FORMAT() 函数返回的显示格式字符串来显示指定的日期值,SQL 语句如下:
format 格式如下表所示:
说明符 | 说明 |
---|---|
%a | 工作日的缩写名称(Sun...Sat) |
%b | 月份的缩写名称(Jan...Dec) |
%c | 月份,数字形式(0...12) |
%D | 以英文后缀表示月中的几号(1st, 2nd...) |
%d | 该月日期,数字形式(00...31) |
%e | 该月日期,数字形式(0...31) |
%f | 微秒(000000...999999) |
%H | 以 2 位数表示 24 小时(00...23) |
%h, %I | 以 2 位数表示 12 小时(01...12) |
%i | 分钟,数字形式(00...59) |
%j | 一年中的天数(001...366) |
%k | 以 24(0...23)小时表示时间 |
%l | 以 12(1...12)小时表示时间 |
%M | 月份名称(January...December) |
%m | 月份,数字形式(00...12) |
%p | 上午(AM)或下午(PM) |
%r | 时间,12 小时制(小时:分钟:秒数,后加AM或PM) |
%S, %s | 以 2 位数形式表示秒(00...59) |
%T | 时间,24 小时制(小时:分钟:秒数) |
%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 位数形式表示年份 |
%% | 标识符 % |
【实例】使用 DATE_FORMAT() 函数格式化输出日期和时间值,SQL 语句如下:
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') AS col1, DATE_FORMAT('1997-10-04 22:23:00','%D %y %a %d %m %b %j') AS col2; +-----------------------+--------------------------+ | col1 | col2 | +-----------------------+--------------------------+ | Saturday October 1997 | 4th 97 Sat 04 10 Oct 277 | +-----------------------+--------------------------+ mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s') AS col3, DATE_FORMAT('1999-01-01', '%X %V') AS col4; +----------+---------+ | col3 | col4 | +----------+---------+ | 22:23:00 | 1998 52 | +----------+---------+可以看到“1997-10-04 22:23:00”分别按照不同参数转换成了不同格式的日期值和时间值。
TIME_FORMAT(time,format) 函数根据表达式 format 的要求显示时间 time。表达式 format 指定了显示的格式。因为 TIME_FORMAT(time,format) 只处理时间,所以 format 只使用时间格式。
【实例】使用 TIME_FORMAT() 函数格式化输入时间值,SQL 语句如下:
mysql>SELECT TIME_FORMAT('16:00:00', '%H %k %h %I %l'); +-----------------------------------------------------------+ | TIME_FORMAT('16:00:00', '%H %k %h %I %l') | +-----------------------------------------------------------+ | 16 16 04 04 4 | +-----------------------------------------------------------+
GET_FORMAT(val_type, format_type) 返回日期和时间字符串的显示格式:
- val_type 表示日期数据类型,包括 DATE、DATETIME 和 TIME;
- format_type 表示格式化显示类型,包括 EUR、INTERVAL、ISO、JIS、USA。
GET_FORMAT 根据两个值类型组合返回的字符串显示格式如下表所示:
值类型 | 格式化类型 | 显示格式字符串 |
---|---|---|
DATE | EUR | %d.%m.%Y |
DATE | INTERVAL | %Y%m%d |
DATE | ISO | %Y-%m-%d |
DATE | JIS | %Y-%m-%d |
DATE | USA | %m.%d.%Y |
TIME | EUR | %H.%i.%s |
TIME | INTERVAL | %H%i%s |
TIME | ISO | %H:%i:%s |
TIME | JIS | %H:%i:%s |
TIME | USA | %h:%i:%s %p |
DATETIME | EUR | %Y-%m-%d %H.%i.%s |
DATETIME | INTERVAL | %Y%m%d%H%i%s |
DATETIME | ISO | %Y-%m-%d %H:%i:%s |
DATETIME | JIS | %Y-%m-%d %H:%i:%s |
DATETIME | USA | %Y-%m-%d %H:%i:%s |
【实例】使用 GET_FORMAT() 函数显示不同格式化类型下的格式字符串,SQL 语句如下:
mysql> SELECT GET_FORMAT(DATE,'EUR'), GET_FORMAT(DATE,'USA'); +------------------------+------------------------+ | GET_FORMAT(DATE,'EUR') | GET_FORMAT(DATE,'USA') | +------------------------+------------------------+ | %d.%m.%Y | %m.%d.%Y | +------------------------+------------------------+可以看到,不同类型的格式化字符串并不相同。
【实例】在 DATE_FORMAT() 函数中,使用 GET_FORMAT() 函数返回的显示格式字符串来显示指定的日期值,SQL 语句如下:
mysql> SELECT DATE_FORMAT('2000-10-05 22:23:00', GET_FORMAT(DATE,'USA') ); +-------------------------------------------------------------+ | DATE_FORMAT('2000-10-05 22:23:00', GET_FORMAT(DATE,'USA') ) | +-------------------------------------------------------------+ | 10.05.2000 | +-------------------------------------------------------------+GET_FORMAT(DATE,'USA') 返回的显示格式字符串为 %m.%d.%Y,对照下表中的显示格式(%m 以数字形式显示月份,%d 以数字形式显示日期,%Y 以 4 位数字形式显示年),因此结果为 10.05.2000。
相关文章
- MySQL DATE_FORMAT函数:格式化指定的日期
- MySQL DTAETIME、TIMESTAMP、DATE、TIME、YEAR(日期和时间类型)
- MySQL日期类型(DATETIME、DATE、TIMESTAMP、TIME和YEAR)
- MySQL DAYOFWEEK函数:获取日期对应的周索引
- MySQL WEEKDAY函数:获取指定日期在一周内的索引位置
- MySQL DAYOFMONTH函数:获取指定日期在一个月的位置
- MySQL DAYOFYEAR函数:获取指定日期在一年中的位置
- MySQL MONTH函数:获取指定日期的月份
- MySQL MONTHNAME函数:获取指定日期月份的英文名称
- MySQL DATEDIFF函数:获取两个日期的时间间隔