MySQL 常用时间函数
一、获取当前时间SELECT
NOW(), -- 年月日时分秒 2026-07-17 15:20:10
CURDATE(), -- 仅日期 2026-07-17
CURTIME(), -- 仅时间 15:20:10
SYSDATE(),
UTC_DATE(),
UTC_TIME();
二、拆分日期 / 时间字段
假设有字段 regtime 存储注册时间(int 时间戳或 datetime)
SELECT
uid,
regtime,
YEAR(regtime) 年,
MONTH(regtime) 月,
DAY(regtime) 日,
HOUR(regtime) 时,
MINUTE(regtime) 分,
SECOND(regtime) 秒,
DAYOFWEEK(regtime) 星期,
DATE_FORMAT(regtime,'%Y-%m-%d') 日期,
DATE_FORMAT(regtime,'%Y-%m-%d %H:%i:%s') 完整时间
FROM pre_common_member;
三、时间戳 ↔ 日期转换(Discuz 常用 int 时间戳)
Discuz 会员表 pre_common_member 里 regdate 是int 时间戳
-- 时间戳转日期
FROM_UNIXTIME(aa.regdate,'%Y-%m-%d %H:%i:%s') AS 注册时间
-- 日期转时间戳
UNIX_TIMESTAMP('2026-07-17')套进你的 SQL 示例:
SELECT
aa.`uid` AS '用户ID',
aa.`loginname` AS '登录名',
FROM_UNIXTIME(aa.regdate,'%Y-%m-%d') AS '注册日期',
bb.`grouptitle` AS '用户组',
CASE
WHEN aa.`adminid` NOT IN (1,2,3) THEN '空'
ELSE cc.`grouptitle`
END AS '管理权限组'
FROM pre_common_member aa
LEFT JOIN pre_common_usergroup bb ON aa.`groupid` = bb.`groupid`
LEFT JOIN pre_common_usergroup cc ON aa.`adminid` = cc.`groupid`;
四、时间加减
DATE_ADD(regtime, INTERVAL 7 DAY) -- 7天后
DATE_SUB(regtime, INTERVAL 1 MONTH)-- 1个月前
DATE_ADD(regtime, INTERVAL 3 HOUR) -- 加3小时
五、计算时间差
DATEDIFF('2026-07-10','2026-07-01') -- 相差天数
TIMESTAMPDIFF(DAY,regdate,NOW()) -- 注册至今多少天
六、判断时间 CASE WHEN 搭配
CASE
WHEN TIMESTAMPDIFF(DAY,FROM_UNIXTIME(aa.regdate),NOW()) < 30 THEN '新用户'
WHEN aa.adminid > 0 THEN '管理员'
ELSE '老会员'
END AS 用户标签
七、日期格式化占位符
%Y 4 位年 | %m 月份 | %d 日期
%H 24 小时 | %i 分钟 | %s 秒
%w 星期
页:
[1]