在mysql事件中,里面有个内容,需要把日期时间“2024-02-28 12:15:16”,变成 “24年2月28日12时15分16秒”,
这时候,需要使用到格式化的内容。
将日期和时间格式化的函数
DATE_FORMAT(date,format)根据format指定的格式显示date值。主要format格式如表6.3所示。
表6.3 DATE_FORMAT时间日期格式
说明符 | 说明 |
%c | 月份,数字形式(0..12) |
%d | 该月日期,数字形式(00..31) |
%e | 该月日期,数字形式(0..31) |
%H | 以2位数表示24小时(00..23) |
%h, %I | 以2位数表示12小时(01..12) |
%i | '分钟,数字形(00..59) |
%j | 一年中的天数(001.366) |
%k | 以24(20..23)小时表示时间 |
%l | 以12(1..12)小时表示时间 |
%n | 月份,数字形式(00..12) |
%r | 时间,12小时制(小时hh:分钟mm:秒数ss后加AM或PM) |
%S, %s | 以2位数形式表示秒(00..59) |
%U | 周(0.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 CONCAT(DATE_FORMAT(NOW(), '%y'),'年',
DATE_FORMAT(NOW(), '%c'),'月', DATE_FORMAT(NOW(), '%e'),'日',
DATE_FORMAT(NOW(), '%k'),'时', DATE_FORMAT(NOW(), '%i'),'分',
DATE_FORMAT(NOW(), '%s'),'秒' ) AS time_cn;
指定日期格式化:
SELECT CONCAT(DATE_FORMAT(STR_TO_DATE('2024-02-28 12:15:16', '%Y-%m-%d %H:%i:%s'), '%y'),'年',
DATE_FORMAT(STR_TO_DATE('2024-02-28 12:15:16', '%Y-%m-%d %H:%i:%s'), '%c'),'月',
DATE_FORMAT(STR_TO_DATE('2024-02-28 12:15:16', '%Y-%m-%d %H:%i:%s'), '%e'),'日',
DATE_FORMAT(STR_TO_DATE('2024-02-28 12:15:16', '%Y-%m-%d %H:%i:%s'), '%k'),'时',
DATE_FORMAT(STR_TO_DATE('2024-02-28 12:15:16', '%Y-%m-%d %H:%i:%s'), '%i'),'分',
DATE_FORMAT(STR_TO_DATE('2024-02-28 12:15:16', '%Y-%m-%d %H:%i:%s'), '%s'),'秒' ) AS time_cn;
这样内容显得很多
用变量的方式:
SET @date := STR_TO_DATE('2024-02-28 12:15:16', '%Y-%m-%d %H:%i:%s');
SELECT CONCAT(DATE_FORMAT(@date, '%y'),'年',
DATE_FORMAT(@date, '%c'),'月', DATE_FORMAT(@date, '%e'),'日',
DATE_FORMAT(@date, '%k'),'时', DATE_FORMAT(@date, '%i'),'分',
DATE_FORMAT(@date, '%s'),'秒' ) AS time_cn;
这样就简洁一些
范围日期时间格式化:
SET @startDate := STR_TO_DATE('2024-02-28 12:15:16', '%Y-%m-%d %H:%i:%s'),
@endDate := STR_TO_DATE('2024-03-5 11:25:06', '%Y-%m-%d %H:%i:%s');
SELECT CONCAT(DATE_FORMAT(@startDate, '%y'),'年',
DATE_FORMAT(@startDate, '%c'),'月', DATE_FORMAT(@startDate, '%e'),'日',
DATE_FORMAT(@startDate, '%k'),'时', DATE_FORMAT(@startDate, '%i'),'分',
DATE_FORMAT(@startDate, '%s'),'秒','到',
DATE_FORMAT(@endDate, '%y'),'年', DATE_FORMAT(@endDate, '%c'),'月',
DATE_FORMAT(@endDate, '%e'),'日',
DATE_FORMAT(@endDate, '%k'),'时', DATE_FORMAT(@endDate, '%i'),'分',
DATE_FORMAT(@endDate, '%s'),'秒' ) AS time_cn;
总结:
日期时间要转换为中文的格式,需要使用到格式化的函数,具体格式化要求,根据实际的来,参考列表上的内容进行处理。