我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL的DATE_FORMAT函数的使用

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL的DATE_FORMAT函数的使用

假设某宝为鼓励大家双12买买买,奖励双十一那天订单最多的两位用户:分别是用户1:“剁手皇帝陈哈哈” 和 用户2:“触手怪刘大莉” 一人一万元;

需求1:让你通过MySQL订单表,统计一下双11那天,这两位每小时的购买订单成交数;你会怎么写这条SQL呢?

记得几年前我刚接触MySQl,年少轻狂,在得知不用考虑效率的情况下,我写了个接口循环二十四遍,发送24条SQL去查(捂脸),由于那个接口,被技术经理嘲讽~~表示他写的SQL比我吃的米都多。虽然我们山东人基本不吃米饭,但我还是羞愧不已。。

然后经理通过调用一个DATE_FORMAT函数分组查询处理一下,就ok了,效率是我的几十倍吧。从那时起,我暗自计划要深入研究SQL技巧。

第二天,由于和朋友开黑打了两把王者,计划延后了几年~

在MySQL中对于处理时间字段,有专门封装的DATE_FORMAT函数,可以说,DATE_FORMAT函数可以基本满足任何时间字段的处理需求。

DATE_FORMAT(date,format) 函数

参数解析:

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')代表的是“年月日 + 小时”合在一起为单位,具体到的是某天的小时;

当然,也可以写成以下两种形式,都是按小时来划分,但是…:

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)。

拿到这些数据,相信写推荐算法的同学就知道在哪个时间段给“触手怪刘大莉”同学推广告的效果最好了。

到此这篇关于MySQL的DATE_FORMAT函数的使用的文章就介绍到这了,更多相关MySQL DATE_FORMAT内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL的DATE_FORMAT函数的使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL的DATE_FORMAT函数的使用

假设某宝为鼓励大家双12买买买,奖励双十一那天订单最多的两位用户:分别是用户1:“剁手皇帝陈哈哈” 和 用户2:“触手怪刘大莉” 一人一万元; 需求1:让你通过MySQL订单表,统计一下双11那天,这两位每小时的购买订单成交数;你会怎么写这
2022-05-24

MySQL 对日期使用 DATE_FORMAT()函数

文章目录 DATE_FORMAT()函数显示今天是星期几只显示年月显示当前时间的分钟数和秒数 DATE_FORMAT()函数 前面使用日期时间函数,获取到的要么是 yyyy-mm-dd 形式的日期,要么是 hh:MM:s
2023-08-17

mysql中date_format函数怎么使用

在MySQL中,DATE_FORMAT函数用于将日期格式化为不同的字符串格式。其基本语法如下:DATE_FORMAT(date, format)其中,date是要格式化的日期,可以是一个日期字段或者日期值,format是要转换为的日期格
mysql中date_format函数怎么使用
2024-04-09

mysql中date_format函数的作用是什么

在MySQL中,DATE_FORMAT函数用于将日期数据格式化为指定的格式。它接受两个参数,第一个参数是要格式化的日期字段,第二个参数是指定日期格式的格式字符串。例如,使用DATE_FORMAT函数可以将日期字段格式化为不同的形式,如年-
mysql中date_format函数的作用是什么
2024-04-09

MySQL中DATE_FORMAT函数怎么用

这篇文章给大家分享的是有关MySQL中DATE_FORMAT函数怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。DATE_FORMAT(date,format):根据参数对date进行格式化。SELECT D
2023-06-17

mysql中date_format函数有什么用

MySQL中的date_format函数用于将日期时间格式化为指定的格式。该函数接受两个参数,第一个参数是日期时间值,第二个参数是要格式化的格式字符串。例如,可以使用date_format函数将日期时间格式化为年-月-日的格式:%Y-%m
mysql中date_format函数有什么用
2024-04-09

mysql中date_format函数的应用场景有哪些

将日期格式化为特定的字符串格式,如将"2021-10-15"格式化为"15/10/2021"。在SELECT语句中,将日期字段按照特定的格式显示,方便查看和分析。将日期字段进行比较或排序,需要先将日期格式化为统一的格式。将日期字段进行
mysql中date_format函数的应用场景有哪些
2024-04-09

MySQL DATE_FORMAT() 函数使用哪些不同的时间格式字符?

MySQL DATE_FORMAT() 函数使用的不同时间格式字符如下 -时间格式字符含义 %H用于缩写 24 小时制的小时,采用两位数格式,如 00、01、02 到 23。 td> %h它用于以两位数格式缩写 12 小时制的小时,例如 0
2023-10-22

mybatis-plus使用sql的date_format()函数来查询数据

前言 上次我们工具类对传入的时间数据进行了切割,这次就是使用date_format()函数对数据库存储的事件类型数据进行切割,并查出符合条件的数据。 DATE_FORMAT()函数介绍 DATE_FORMAT()函数接受两个参数: date
2023-08-17

mybatis-plus如何使用sql的date_format()函数查询数据

目录前言myBAT编程客栈is-plus使用DATE_FORMAT()函数总结前言上次我们工具类对传入的时间数据进行了切割,这次就是使用date_format()函数对数据库存储的事件类型数据进行切割,并查出符合条件的数据。DATE_F
2023-02-02

sql date_format函数的用法是什么

DATE_FORMAT函数用于格式化日期和时间值,可以将日期和时间以特定的格式呈现。语法:DATE_FORMAT(date, format)参数:date:要格式化的日期和时间值。format:用于指定返回值的日期和时间格式。常用的f
sql date_format函数的用法是什么
2024-04-09

sql date_format函数的作用是什么

SQL的DATE_FORMAT函数用于将日期或时间值按照指定的格式进行格式化。它的作用是将日期或时间值转换为特定的格式,使其更易于阅读和理解。该函数接受两个参数:要格式化的日期或时间值和要使用的格式字符串。格式字符串可以包含特殊的格式代码
sql date_format函数的作用是什么
2024-04-09

MySQL函数date_format()日期格式转换的实现

一、在oracle中,当想把字符串为‘2011-09-20 08:30:45’的格式转化为日期格式,我们可以使用oracle提供的to_date函数。sql语句为:SELECT to_date('2011-09-
2022-08-12

MySQL日期格式化yyyy-mm-dd详解(DATE_FORMAT()函数)

目录一、前言二、 DATE_FORMAT() 函数 和 NOW() 函数三、Unix_TIMESTAMP() 函数 和 FROM_UNIXTIME() 函数四、拿来就用总结一、前言本文你将会学到:DATE_FORMAT() 函数NOW(
2023-01-12

MySQL时间格式化date_format使用语法

正文“ 这是mysql系列笔记的第十三篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或者个人知识点查阅。”这一篇笔记介绍如何对 MySQL 中的时间字段进行格式化处理。根据前一篇笔记的
2023-05-20

如何在MySQL DATE_FORMAT()函数中一起使用日期和时间格式字符?

我们可以在 DATE_FORMAT() 函数中同时使用这两个格式字符。下面的例子将阐明这一点 -mysql> SELECT DATE_FORMAT(NOW(), The time is %a %h:%i:%s:%f %p);+-------
2023-10-22

编程热搜

目录