MySql获取当前时间及字符串转换:NOW、DATE_FORMAT与STR_TO_DATE详解
本文讲解如何在 MySQL 数据库中获取当前系统时间,并提供使用 NOW()、SYSDATE() 等函数的详细差异说明。同时深度解析利用 DATE_FORMAT 将时间戳转换为特定字符串格式的语法,以及通过 STR_TO_DATE 实现字符串向日期类型的反向转换,附带常见格式代码表与实战案例。
MySQL 获取当前时间的函数选择
在 MySQL 开发中,获取当前日期和时间是最基础的需求。虽然存在多个相关函数,但正确理解其底层逻辑至关重要。
第1步:理解 NOW() 函数
NOW() 是最常用的获取当前日期和时间的函数。它返回包含年、月、日和秒的完整时间值(如 '2023-10-27 14:30:00')。
SELECT NOW();
关键特性: NOW() 返回的是语句开始执行的时间。在存储过程或触发器中,多次调用 NOW() 得到的结果是一致的。此外,以下函数在功能上与 NOW() 完全等效,建议优先使用简短易记的 NOW():
CURRENT_TIMESTAMP/CURRENT_TIMESTAMP()LOCALTIME/LOCALTIME()LOCALTIMESTAMP/LOCALTIMESTAMP()
第2步:掌握 SYSDATE() 的区别
SYSDATE() 同样获取当前时间,但它具有不同的行为机制。它在函数执行的瞬间捕获时间。如果在同一条 SQL 语句中多次调用 SYSDATE(),且中间间隔了足够长的时间,结果可能会不同。
SELECT SYSDATE();
适用场景: 适用于需要精确记录某个具体动作发生时刻的场景,而在常规查询中,通常推荐使用 NOW()。
时间格式化为字符串 (DATE_FORMAT)
将 MySQL 的日期时间类型转换为符合业务需求的字符串格式,主要使用 DATE_FORMAT(date, format) 函数。其中 format 参数决定了输出样式。
第3步:常用格式化参数规则
以下是构建自定义时间字符串时最常用的格式控制符:
- 年月日:
%Y(四位年份)、%y(两位年份)、%M(月份全称)、%m(两位月份)、%c(数字月份)、%D(英文后缀天数)、%d(两位天数)。 - 时间:
%H(24小时制)、%h(12小时制)、%i(分钟)、%s(秒)。简写形式如%T可直接表示 hh:mm:ss 格式。 - 快捷组合:
%r代表 12 小时制带 AM/PM(hh:mm:ss AM),%p仅表示 AM 或 PM。 - 其他:
%w(星期几,0=周日)、%j(一年中的第几天)。
第4步:实战转换示例
假设我们需要将当前时间转换为 'YYYY-MM-DD' 格式:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
如果需要输出中文风格的日志,例如 '2023年10月27日 14:30:05',则可结合字面量字符:
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i:%s');
字符串反转为日期 (STR_TO_DATE)
当外部数据以字符串形式传入,需存入 MySQL 日期字段时,应使用 STR_TO_DATE(str, format) 进行逆向解析。其 format 参数的使用规则与 DATE_FORMAT 完全一致。
第5步:执行字符串转日期操作
将标准日期字符串 '2023-01-01' 转换为 MySQL 内部的 DATE/DATETIME 对象:
SELECT STR_TO_DATE('2023-01-01', '%Y-%m-%d');
注意事项: 如果输入的字符串格式与提供的 format 模式不匹配,函数可能返回 NULL。建议在入库前确保格式严格对应。
以上就是 MySQL 获取当前时间并处理字符串转换的详细教程,更多关于 MySQL 日期处理技巧的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













