首页 > 数据库 >mysql 月份差_MySQL时间差返回月个数

mysql 月份差_MySQL时间差返回月个数

时间:2023-09-23 19:07:44浏览次数:48  
标签:interval 08 mysql 时间差 add MySQL date dt select

Sql代码  

select PERIOD_DIFF(date_format(now(),'%Y%m'),date_format('2010-11-30','%Y%m'))

1. MySQL 为日期增加一个时间间隔:date_add()

Sql代码  

set @dt = now();

select date_add(@dt, interval 1 day); -- add 1 day

select date_add(@dt, interval 1 hour); -- add 1 hour

select date_add(@dt, interval 1 minute); -- ...

select date_add(@dt, interval 1 second);

select date_add(@dt, interval 1 microsecond);

select date_add(@dt, interval 1 week);

select date_add(@dt, interval 1 month);

select date_add(@dt, interval 1 quarter);

select date_add(@dt, interval 1 year);

select date_add(@dt, interval -1 day); -- sub 1 day

MySQL adddate(), addtime()函数,可以用 date_add() 来替代。下面是 date_add() 实现 addtime() 功能示例:

Sql代码  

mysql> set @dt = '2008-08-09 12:12:33';

mysql>

mysql> select date_add(@dt, interval '01:15:30' hour_second);

+------------------------------------------------+

| date_add(@dt, interval '01:15:30' hour_second) |

+------------------------------------------------+

| 2008-08-09 13:28:03 |

+------------------------------------------------+

mysql> select date_add(@dt, interval '1 01:15:30' day_second);

+-------------------------------------------------+

| date_add(@dt, interval '1 01:15:30' day_second) |

+-------------------------------------------------+

| 2008-08-10 13:28:03 |

+-------------------------------------------------+

date_add() 函数,分别为 @dt 增加了“1小时 15分 30秒” 和 “1天 1小时 15分 30秒”。建议:总是使用 date_add() 日期时间函数来替代 adddate(), addtime()。

2. MySQL 为日期减去一个时间间隔:date_sub()

Sql代码  

mysql> select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);

+----------------------------------------------------------------+

| date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) |

+----------------------------------------------------------------+

| 1997-12-30 22:58:59 |

+----------------------------------------------------------------+

MySQL date_sub() 日期时间函数 和 date_add() 用法一致,不再赘述。另外,MySQL 中还有两个函数 subdate(), subtime(),建议,用 date_sub() 来替代。

3. MySQL 另类日期函数:period_add(P,N), period_diff(P1,P2)

函数参数“P” 的格式为“YYYYMM” 或者 “YYMM”,第二个参数“N” 表示增加或减去 N month(月)。

MySQL period_add(P,N):日期加/减去N月。

Sql代码  

mysql> select period_add(200808,2), period_add(20080808,-2)

+----------------------+-------------------------+

| period_add(200808,2) | period_add(20080808,-2) |

+----------------------+-------------------------+

| 200810 | 20080806 |

+----------------------+-------------------------+

MySQL period_diff(P1,P2):日期 P1-P2,返回 N 个月。

Sql代码  

mysql> select period_diff(200808, 200801);

+-----------------------------+

| period_diff(200808, 200801) |

+-----------------------------+

| 7 |

+-----------------------------+

在 MySQL 中,这两个日期函数,一般情况下很少用到。

4. MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。

Sql代码  

select datediff('2008-08-08', '2008-08-01'); -- 7

select datediff('2008-08-01', '2008-08-08'); -- -7

MySQL timediff(time1,time2):两个日期相减 time1 - time2,返回 time 差值。

Sql代码  

select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 08:08:08

select timediff('08:08:08', '00:00:00'); -- 08:08:08

注意:timediff(time1,time2) 函数的两个参数类型必须相同。

MySQL查询的方式很多,下面为您介绍的MySQL查询实现的是查询本周、上周、本月、上个月份的数据,如果您对MySQL查询方面感兴趣的话,不妨一看。

查询当前这周的数据

Sql代码  

SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());

查询上周的数据

Sql代码  

SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;

查询当前月份的数据

Sql代码  

select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m')

查询距离当前现在6个月的数据

Sql代码  

select name,submittime from enterprise where submittime between date_sub(now(),interval 6 month) and now();

查询上个月的数据

Sql代码  

select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')

Sql代码  

select * from `user` where DATE_FORMAT(pudate,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ;

select * from user where WEEKOFYEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = WEEKOFYEAR(now())

select *

from user

where MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now())

select *

from [user]

where YEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = YEAR(now())

and MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now())

select *

from [user]

where pudate between 上月最后一天

and 下月第一天

标签:interval,08,mysql,时间差,add,MySQL,date,dt,select
From: https://blog.51cto.com/u_16271212/7579861

相关文章

  • 告警日志出现"which is different from the number of indexes 4 defined in the MySQ
    问题描述:告警日志出现"whichisdifferentfromthenumberofindexes4definedintheMySQL"报错,如下所示:数据库:MySQL5.7.211、告警日志########################################ErrorDetail########################################23092121:30:00[ERROR]Tablet......
  • Linux网站搭建(nginx+php+mysql)
    目录nginx安装nginx服务器依赖环境源码安装和yum安装的区别源码安装源码安装三步走:php下载安装所有扩展:(php运行所需要的环境)编辑/etc/php.ini开启php-fpm在html下创建index.php,看一下是否可以网页中访问得到它编辑nginx配置文件重启服务mysql安装mysqlmysql的使用......
  • MySQL 如何实现分页查询
    MySQL如何实现分页查询参考文档:使用MySQL如何实现分页查询-路饭网(45fan.com)(24条消息)【MySQL】MySQL中如何实现分页操作_自牧君的博客-CSDN博客_mysql分页通过limit关键字格式为:select*from<库表名>Limit<位置偏移量>,<每页条目数>;单参数用法当指定一个......
  • MySQL 基础指令
    MySQL基础指令参考文档:MySQL官网MySQL::MySQL8.0参考手册数据结构可视化创建数据库CREATEDATABASE<数据库名>;切换数据库USE<数据库名>;创建表CREATETABLEIFNOTEXISTS`request_record_info`( `id`BIGINTAUTO_INCREMENT......
  • MySQL 双机常见的问题
    MySQL双机常见的问题参考文档:MySQL报错ERROR1872(HY000):Slavefailedtoinitialize怎么解决-MySQL数据库-亿速云(yisu.com)‍A机数据同步B机正常,B机同步A机失败?正常登陆B机数据库:mysql–uroot–p2wsx3edc​查看同步是否正常:showslavestatus\G;​A如果......
  • 启动MySQL数据库时报错"Another process with pid 3306 is using unix socket file…
    问题描述:启动MySQL数据库时报错"Anotherprocesswithpid3306isusingunixsocketfile……",如下所示:数据库:MySQL5.7.211、异常重现2023-09-23T06:09:48.644151Z0[Note]ServersocketcreatedonIP:'::'.2023-09-23T06:09:48.645247Z0[ERROR]Anotherprocessw......
  • mysql数据库和oracle的优缺点
    MySQL和Oracle是两个广泛使用的关系型数据库管理系统(RDBMS),每种数据库都有其自身的优势和不足。MySQL的优点开源性:MySQL是一个开源的软件,用户可以免费使用和修改。这降低了成本,并有利于那些财务资源有限的公司。此外,开源社区的贡献也使得MySQL能够持续优化和更新。易用性:MySQL具有高......
  • Java与MySQL的数据加密与解密:保障数据安全
    Java与MySQL的数据加密与解密是保障数据安全的重要手段。数据加密可以有效地防止敏感数据在存储和传输过程中被未经授权的人访问和篡改,而数据解密则是在需要使用加密数据时对其进行还原。下面将详细介绍如何在Java与MySQL中实现数据加密与解密来保障数据安全。一、数据加密方法1、......
  • mysql存储过程
    CREATETABLE`member`(`lv_id`int(255)NOTNULLAUTO_INCREMENT,`uname`varchar(255)DEFAULTNULL,`email`varchar(255)DEFAULTNULL,`passwd`varchar(255)DEFAULTNULL,`sex`int(11)DEFAULTNULL,PRIMARYKEY(`lv_id`))ENGINE=InnoDBAUTO_INCREME......
  • Docker 部署 MySQL
    Docker部署MySQL参考资料:使用docker-compose的方式部署mysql拉取镜像dockerpullmysql:latest创建数据卷mkdir-p./mysql/datamkdir-p./mysql/initdbmkdir-p./mysql/log运行容器设置开机自启dockerrun\--namemysql\-d\-p3306:3306\-v./mysql/log......