本篇文章为大家展示了DATE_FORMAT函数怎么在MySQL中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
DATE_FORMAT(date,format) 函数
参数解析:
1、date:代表具体时间字段,也可以为now()查询当前时间;
2、format:DATE_FORMAT将传来的Date类型数据转为自己需要的格式,如%Y-%m-%d %H:%i:%s会将传来的Time数据转为"yyyy-MM-dd HH:mm:ss"格式
%Y-%m-%d %H:%i:%s 与 yyyy-MM-dd HH:mm:ss 相对应,也是最常用的格式,这里举几个简单的栗子如下;
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'); -- 结果:2020-12-07 22:18:58 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i'); -- 结果:2020-12-07 22:18 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H'); -- 结果:2020-12-07 22 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d'); -- 结果:2020-12-07 SELECT DATE_FORMAT(NOW(),'%H:%i:%s'); -- 结果:22:18:58 SELECT DATE_FORMAT(NOW(),'%H'); -- 结果:22
对于上面的需求1,用DATE_FORMAT函数的查询方式如下:
SELECT name as '用户名',DATE_FORMAT(createTime,'%Y-%m-%d %H') as '时间/小时',count(*) as '订单量' from t_order where DATE_FORMAT(createTime,'%Y-%m-%d') = '2020-11-11' GROUP BY DATE_FORMAT(createTime,'%Y-%m-%d %H');
查询结果:
mysql> SELECT name as '用户名',DATE_FORMAT(createTime,'%Y-%m-%d %H') as '时间/小时',count(*) as '订单量' from t_order where DATE_FORMAT(createTime,'%Y-%m-%d') = '2020-11-11' GROUP BY DATE_FORMAT(createTime,'%Y-%m-%d %H'); +------------------+---------------+-----------+ | 用户名 | 时间/小时 | 订单量 | +------------------+---------------+-----------+ | 剁手皇帝陈哈哈 | 2020-11-11 00 | 0 | | 剁手皇帝陈哈哈 | 2020-11-11 01 | 10 | | 剁手皇帝陈哈哈 | 2020-11-11 02 | 6 | | 剁手皇帝陈哈哈 | 2020-11-11 03 | 3 | | 剁手皇帝陈哈哈 | 2020-11-11 04 | 0 | | 剁手皇帝陈哈哈 | 2020-11-11 05 | 0 | | 剁手皇帝陈哈哈 | 2020-11-11 06 | 0 | | 剁手皇帝陈哈哈 | 2020-11-11 07 | 0 | | 剁手皇帝陈哈哈 | 2020-11-11 08 | 0 | | 剁手皇帝陈哈哈 | 2020-11-11 09 | 0 | | 剁手皇帝陈哈哈 | 2020-11-11 10 | 0 | | 剁手皇帝陈哈哈 | 2020-11-11 11 | 0 | | 剁手皇帝陈哈哈 | 2020-11-11 12 | 12 | | 剁手皇帝陈哈哈 | 2020-11-11 13 | 6 | | 剁手皇帝陈哈哈 | 2020-11-11 14 | 3 | | 剁手皇帝陈哈哈 | 2020-11-11 15 | 7 | | 剁手皇帝陈哈哈 | 2020-11-11 16 | 2 | | 剁手皇帝陈哈哈 | 2020-11-11 17 | 3 | | 剁手皇帝陈哈哈 | 2020-11-11 18 | 11 | | 剁手皇帝陈哈哈 | 2020-11-11 19 | 2 | | 剁手皇帝陈哈哈 | 2020-11-11 20 | 1 | | 剁手皇帝陈哈哈 | 2020-11-11 21 | 3 | | 剁手皇帝陈哈哈 | 2020-11-11 22 | 2 | | 剁手皇帝陈哈哈 | 2020-11-11 23 | 0 | +------------------+---------------+-----------+ 24 rows in set (0.00 sec)
这里的GROUP BY DATE_FORMAT(createTime,'%Y-%m-%d %H')代表的是“年月日 + 小时”合在一起为单位,具体到的是某天的小时;
当然,也可以写成以下两种形式,都是按小时来划分,但是…:
1、GROUP BY DATE_FORMAT(createTime,'%H')
2、GROUP BY HOUR(createTime)
需要注意的是,当where条件指定了某一天时,这三种的作用是相同的,但如果where条件没指定某一天,就会大不相同,我们来看看查询结果;
SELECT name as '用户名',DATE_FORMAT(createTime,'%H') as '时间/小时',count(*) as '订单量' from t_order GROUP BY DATE_FORMAT(createTime,'%H');
查询结果
mysql> SELECT name as '用户名',DATE_FORMAT(createTime,'%H') as '时间/小时',count(*) as '订单量' from t_order GROUP BY DATE_FORMAT(createTime,'%H'); +-----------------+---------------+-----------+ | 用户名 | 时间/小时 | 订单量 | +-----------------+---------------+-----------+ | 触手怪刘大莉 | 00 | 11 | | 触手怪刘大莉 | 01 | 302 | | 触手怪刘大莉 | 02 | 277 | | 触手怪刘大莉 | 03 | 122 | | 触手怪刘大莉 | 04 | 6 | | 触手怪刘大莉 | 05 | 11 | | 触手怪刘大莉 | 06 | 0 | | 触手怪刘大莉 | 07 | 0 | | 触手怪刘大莉 | 08 | 1 | | 触手怪刘大莉 | 09 | 4 | | 触手怪刘大莉 | 10 | 5 | | 触手怪刘大莉 | 11 | 92 | | 触手怪刘大莉 | 12 | 1937 | | 触手怪刘大莉 | 13 | 1602 | | 触手怪刘大莉 | 14 | 108 | | 触手怪刘大莉 | 15 | 78 | | 触手怪刘大莉 | 16 | 110 | | 触手怪刘大莉 | 17 | 108 | | 触手怪刘大莉 | 18 | 138 | | 触手怪刘大莉 | 19 | 66 | | 触手怪刘大莉 | 20 | 44 | | 触手怪刘大莉 | 21 | 59 | | 触手怪刘大莉 | 22 | 21 | | 触手怪刘大莉 | 23 | 8 | +-----------------+---------------+-----------+ 24 rows in set (0.01 sec)
通过查询结果可以看出,查出的数据是用户历史所有的订单数在各小时的分布情况,DATE_FORMAT(createTime,'%H')代表的是是任意天的小时,也等价于GROUP BY HOUR(createTime)。
上述内容就是DATE_FORMAT函数怎么在MySQL中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。