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

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

时间:2023-09-23 19:11:07浏览次数:55  
标签: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 下月第一天
mysql 月份差_MySQL时间差返回月个数

标签:08,mysql,时间差,add,MySQL,date,dt,select
From: https://www.cnblogs.com/ips9999/p/17724925.html

相关文章

  • MyBatis MySQL limit分页含运算动态语句
    MySQL基本的分页语句select*fromtablelimitoffset,pageSize正常情况下是没问题的,如果offset是动态的select*fromtablelimit(pageNum-1)*pageSize,pageSize这样就无法执行了。具体原因可以在MySQL中直接执行这种含运算符的语句试下就知道了。现在给出两种解决方案使用MySQ......
  • Mysql计算月份差
    hiredate是数据库当中的时间now()获取的是当前时间DATE_FORMAT()对时间进行格式化SELECT*,PERIOD_DIFF(DATE_FORMAT(now(),'%Y%m'),DATE_FORMAT(hiredate,'%Y%m'))hiredate是数据库当中的时间now()获取的是当前时间DATE_FORMAT()对时间进行格式化SELECT*,PERIOD_DIFF(DAT......
  • mysql 月份差_MySQL时间差返回月个数
    Sql代码selectPERIOD_DIFF(date_format(now(),'%Y%m'),date_format('2010-11-30','%Y%m'))1.MySQL为日期增加一个时间间隔:date_add()Sql代码set@dt=now();selectdate_add(@dt,interval1day);--add1dayselectdate_add(@dt,int......
  • 告警日志出现"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具有高......