首页 > 编程笔记 > MySQL笔记 阅读:21

MySQL日期格式化的多种方式(非常详细,附带实例)

MySQL 中的 DATE_FORMAT(date,format) 函数根据 format 指定的格式显示 date 值。

format 格式如下表所示:

表:DATE_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) 返回日期和时间字符串的显示格式:
GET_FORMAT 根据两个值类型组合返回的字符串显示格式如下表所示:

表: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。

相关文章