网站首页 > java教程 正文
引言
日常业务开发中,我们经常需要跟SQl的日期打交道,比如查询最近30天的订单,查询某一个月的订单量,统计某天每小时的下单量等等,于是整理了以下MySql时间处理函数。
DATE_ADD()
定义: 向日期添加指定的时间间隔。
语法格式:
DATE_ADD(date,INTERVAL expr unit) 复制代码
demo:
mysql> SELECT DATE_ADD('2018-05-01',INTERVAL 1 DAY); -> '2018-05-02' //如果你查最近七天内的订单,可以这样: mysql> SELECT * FROM `order` WHERE OrderDate>=DATE_ADD(NOW(),INTERVAL -7 DAY); 复制代码
DATE_SUB()
定义: 从日期减去指定的时间间隔。
语法格式:
DATE_SUB(date,INTERVAL expr unit) 复制代码
demo:
SELECT DATE_SUB('2018-05-01',INTERVAL 1 YEAR); -> '2017-05-01' //如果你查最近七天内的订单,可以这样: select * from `order` where OrderDate>=DATE_SUB(NOW(),INTERVAL 7 DAY); 复制代码
DATEDIFF()
定义: 返回两个日期之间的天数
语法格式:
DATEDIFF(expr1,expr2) 复制代码
demo:
mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30'); -> 1 mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31'); -> -31 //如果你查最近30天内的订单,可以这样: select * from `order` where DATEDIFF(NOW(),OrderDate)<=30; 复制代码
DAYOFWEEK()
定义: 表示返回日期是星期几,记住:星期天=1,星期一=2, ... 星期六=7
语法格式:
DAYOFWEEK(date) 复制代码
demo:
mysql> SELECT DAYOFWEEK('2007-02-03'); -> 7 //查询星期六下的订单 mysql> SELECT * FROM `order` WHERE DAYOFWEEK(OrderDate) =7; 复制代码
MONTH()
定义: 返回date是当年的第几月,1月就返回1,... ,12月就返回12
语法格式:
MONTH(date) 复制代码
demo:
mysql> SELECT MONTH('2019-11-24'); -> 11 //查看今年11月份下的订单 SELECT * FROM `order` WHERE OrderDate>= '2019-01-01' and MONTH(OrderDate) =11 ; 复制代码
YEAR()
定义: 返回date是年份,从1000到9999.
语法格式:
YEAR(date) 复制代码
demo:
mysql> SELECT YEAR('1987-01-01'); -> 1987 // 查看2018年下的订单总数 SELECT count(*) FROM `order` WHERE Year(OrderDate) =2018 ; 复制代码
HOUR()
定义: 返回该date或者time的hour值,值范围(0-23).
语法格式:
HOUR(time) 复制代码
demo:
mysql> SELECT HOUR('10:05:03'); -> 10 // 查看2019年双11,0点下单量 SELECT count(*) FROM `order` WHERE OrderDate BETWEEN '2019-11-11' and '2019-11-12' and HOUR(OrderDate) =0 ; 复制代码
DATE_FORMAT()
定义: 用于以不同的格式显示日期/时间数据。。
语法格式:
DATE_FORMAT(date,format) 复制代码
date为对应的日期,fromat为输出格式。format的格式如下:
格式 描述 %a 缩写星期名 %b 缩写月名 %c 月,数值 %D 带有英文前缀的月中的天 %d 月的天,数值(00-31) %e 月的天,数值(0-31) %f 微秒 %H 小时 (00-23) %h 小时 (01-12) %i 分钟,数值(00-59) %j 年的天 (001-366) %M 月名 %m 月,数值(00-12) %S 秒(00-59) %T 时间, 24-小时 (hh:mm:ss) %W 星期名 %Y 年,4 位
demo:
mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y'); -> 'Sunday October 2009' mysql> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s'); -> '22:23:00' // 统计2019年11月23号,每小时的下单量 select hour(OrderDate) as hour,count(*) as counts from `order` where DATE_FORMAT(OrderDate,'%Y-%m-%d') = '2019-11-23' group by hour(OrderDate); 复制代码
EXTRACT()
定义: 用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
语法格式:
EXTRACT(unit FROM date) 复制代码
date 参数是合法的日期表达式。unit 参数可以是下列的值:
Unit值 SECOND MINUTE HOUR DAY WEEK MONTH YEAR ...
demo:
mysql> SELECT EXTRACT(YEAR FROM '2019-07-02'); -> 2019 mysql> SELECT EXTRACT(YEAR_MONTH FROM '2019-07-02 01:02:03'); -> 201907 mysql> SELECT EXTRACT(DAY_MINUTE FROM '2019-07-02 01:02:03'); -> 20102 //查询订单的年月日 mysql>SELECT EXTRACT(YEAR FROM OrderDate) AS OrderYear, ->EXTRACT(MONTH FROM OrderDate) AS OrderMonth, ->EXTRACT(DAY FROM OrderDate) AS OrderDay ->FROM `order` 复制代码
NOW(),CURDATE(),CURTIME()
定义:
- NOW()返回当前的日期和时间
- CURDATE() 返回当前的日期
- CURTIME() 返回当前的时间
语法格式:
NOW() CURDATE() CURTIME() 复制代码
demo:
DATE(),DAY(), TIME()
定义:
- DATE() 提取日期或日期/时间表达式的日期部分
- DAY() 返回当月的几号 (1-31)
- TIME() 提取日期或日期/时间表达式的时间部分
语法格式:
DATE(expr) DAY(date) TIME(expr) 复制代码
demo:
mysql> SELECT DATE('2003-12-31 01:02:03'); -> '2003-12-31' mysql> select day('2017-02-03'); ->3 mysql> SELECT TIME('2003-12-31 01:02:03'); -> '01:02:03' mysql> SELECT TIME('2003-12-31 01:02:03.000123'); -> '01:02:03.000123'
小结
欢迎关注头条号:JAVA大飞哥
点击关注评论转发一波~~
私信小编发送“架构”(免费获取JAVA相关的面试架构资料哟)可以获取上方资料哦
最后,每一位读到这里的Java程序猿朋友们,感谢你们能耐心地看完。希望在成为一名更优秀的Java程序猿的道路上,我们可以一起学习、一起进步!都能赢取白富美,走向架构师的人生巅峰!
猜你喜欢
- 2024-11-11 Java 8新特性:新的时间和日期API(java的日期类型)
- 2024-11-11 整理一波Mysql中易忘基础知识点和也许你也会踩的一些坑
- 2024-11-11 Idea安装通义灵码教程(idea安装使用教程)
- 2024-11-11 「开发者成长」不要在网上乱拷贝代码了
- 2024-11-11 java 8 新的时间和日期 API(java对日期的处理)
- 2024-11-11 一段网上找的代码突然爆了,项目出现大Bug
- 2024-11-11 python之time模块详细梳理(python中time模块详解)
- 2024-11-11 网上找的一段代码突然爆了,项目出现大Bug
- 2024-11-11 LeetCode基础算法题第166篇:1185. 给定一个日期求星期几
- 2024-11-11 现代与传统日期时间处理工具概览(时间 日期)
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)