在平时开发中,经常会遇到一些时间范围的查询,比如查询近 7 天内注册的新用户,如果表中存储的是 timestamp 类型,那么开发时,查询数据可能看到的是一个整形的时间戳,不便于阅读,怎么能让查询的结果集中的时间显示正常可读的时间格式呢?
答案就是使用 MySQL 中的函数。准确地说,是 format 系列的函数。
总结了下,日期时间格式化相关函数大概有一下几种:
函数名 | 简介 | 说明 |
---|---|---|
DATE_FORMAT | 格式化日期 | - |
TIME_FORMAT | 按指定格式格式化时间 | - |
FORMAT | 将数字格式化为“#,###,###。##”等格式,舍入到指定的小数位数 | - |
UNIX_TIMESTAMP | 将日期时间转换为时间戳 | - |
FROM_UNIXTIME | 将时间戳转换为日期时间格式 | - |
时间转为时间戳
例如,当我们要查询 2021-11-01 ~ 2021-11-02 之间的数据时,可以这样:
SELECT FROM_UNIXTIME(t1.create_time,'%Y-%m-%d %T'),t1.* FROM `user` t1 WHERE is_delete=2
and create_time>=UNIX_TIMESTAMP('2021-11-01 00:00:00') and create_time<=UNIX_TIMESTAMP('2021-11-02 23:59:59')
LIMIT 0,20
查询时,就不用再去找额外的工具将一个特定的日期时间转为时间戳。
时间戳转时间格式
如果想把一个时间戳转换为日期格式显示,可以使用 FROM_UNIXTIME:
SELECT FROM_UNIXTIME(1602668106,'%Y-%m-%d %T');
// 2020-10-14 09:35:06
参考
- https://blog.csdn.net/weixin_44716992/article/details/109294581