MySQL 获取当前日期函数与 DATE_FORMAT 参数详解
在数据库开发中,获取系统当前时间和按特定格式输出日期是高频需求。本文将解析 MySQL 中用于获取当前时间的 NOW() 函数,并深入讲解核心的时间格式化函数 DATE_FORMAT。通过列举常用格式化参数(如年、月、日、时、分、秒的代码),提供具体的 SQL 查询示例,帮助用户准确实现日期的展示与存储。
获取系统当前时间
MySQL 提供了一个内置函数 NOW(),用于返回当前日期和时间。其返回值取决于函数使用的上下文(字符串或数字)。默认情况下,它以 'YYYY-MM-DD HH:MM:SS' 的格式返回。
语法:
NOW()
示例:
SELECT NOW();
输出结果示例:
2023-10-25 14:38:59
使用 DATE_FORMAT 格式化日期
当我们需要将日期时间转换为特定的显示格式(如仅显示年月日,或仅显示时分秒)时,应使用 DATE_FORMAT(date, format) 函数。该函数接受两个参数:需要格式化的日期字段或表达式,以及指定输出格式的格式字符串。
语法:
DATE_FORMAT(date, format)
- date:时间字段或日期时间表达式(如
NOW())。 - format:由各种格式说明符组成的字符串,每个说明符以百分号 (
%) 开头。
常见应用示例:
- 仅获取年月日(短格式):
SELECT DATE_FORMAT(NOW(), '%y-%m-%d'); -- 输出示例:23-10-25 - 获取完整日期格式:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 输出示例:2023-10-25 14:38:59 - 获取中文风格的日期描述:
SELECT CONCAT(YEAR(NOW()), '年', MONTH(NOW()), '月', DAY(NOW()), '日'); -- 注意:此处需组合使用年份、月份、日期的独立函数,因为 DATE_FORMAT 不直接支持中文关键字
DATE_FORMAT 常用参数对照表
以下是 DATE_FORMAT 中最常用的格式化代码及其含义。理解这些代码是灵活定制时间输出的关键。
时间与小时相关
| 格式代码 | 含义 | 示例 |
|---|---|---|
%S, %s |
秒,两位数字 (00-59) | 38 |
%I, %i |
分钟,两位数字 (00-59) | 45 |
%H |
小时,24 小时制,两位数字 (00-23) | 14 |
%h |
小时,12 小时制,两位数字 (01-12) | 02 |
%k |
小时,24 小时制,数字形式 (0-23) | 14 |
%l |
小时,12 小时制,数字形式 (1-12) | 2 |
%T |
24 小时时间格式 (hh:mm:ss) | 14:45:30 |
%r |
12 小时时间格式 (hh:mm:ss AM/PM) | 02:45:30 PM |
%p |
AM 或 PM | PM |
日、月、年相关
| 格式代码 | 含义 | 示例 |
|---|---|---|
%W |
星期名称 (Sunday-Saturday) | Wednesday |
%a |
星期缩写 (Sun-Sat) | Wed |
%d |
月中天数,两位数字 (00-31) | 25 |
%e |
月中天数,数字形式 (1-31) | 25 |
%M |
月份全称 (January-December) | October |
%b |
月份缩写 (Jan-Dec) | Oct |
%m |
月份,两位数字 (00-12) | 10 |
%c |
月份,数字形式 (1-12) | 10 |
%Y |
年份,四位数字 | 2023 |
%y |
年份,两位数字 | 23 |
其他高级格式
| 格式代码 | 含义 | 示例 |
|---|---|---|
%j |
年中的第几天 (001-366) | 298 |
%w |
星期中的第几天 (0=Sunday, 6=Saturday) | 3 |
%U |
周数 (0-52),周日为每周第一天 | 43 |
%u |
周数 (0-52),周一为每周第一天 | 43 |
%% |
字面量百分号 | % |
常见问题与注意事项
- 大小写敏感性:上述大部分格式代码对大小写敏感,例如
%y(两位年份) 和%Y(四位年份) 会产生不同结果,使用时请务必区分。 - 无效日期:如果输入的日期非法(如 '2023-02-30'),
DATE_FORMAT在严格模式下可能返回 NULL 或产生警告,建议先验证数据合法性。 - 性能考量:虽然
DATE_FORMAT非常方便,但在大数据量表的 WHERE 子句中对时间字段使用该函数可能会阻止索引的使用,导致全表扫描。若用于查询条件,建议保持原始时间类型或使用范围查询。
以上就是 MySQL 获取当前日期函数及 DATE_FORMAT 时间格式化参数的详细内容,更多关于 MySQL 时间处理技巧的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













