`

MySQL时间差返回月个数

    博客分类:
  • SQL
阅读更多
select PERIOD_DIFF(date_format(now(),'%Y%m'),date_format('2010-11-30','%Y%m')) 

1. MySQL 为日期增加一个时间间隔:date_add()
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() 功能示例:
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()
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月。
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 个月。
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,返回天数。
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 差值。
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查询方面感兴趣的话,不妨一看。

查询当前这周的数据
SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());

查询上周的数据
SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;

查询当前月份的数据
select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m')


查询距离当前现在6个月的数据
select name,submittime from enterprise where submittime between date_sub(now(),interval 6 month) and now();


查询上个月的数据
select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')


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 时间差及字符串时间转换

    如果需要计算其他单位(如小时、分钟或秒)的时间差,可以使用`TIMESTAMPDIFF()`函数,它接受一个单位参数(如SECOND, MINUTE, HOUR, DAY等)和两个日期/时间表达式: ```sql SELECT TIMESTAMPDIFF(HOUR, '2012-...

    Mysql 时间模糊查询

    本文将详细介绍几种常见的MySQL时间模糊查询方法,并通过实例加以说明。 #### 二、模糊查询的基本概念 模糊查询是指不精确地匹配查询条件的一种查询方式。在MySQL中,模糊查询主要通过`LIKE`关键字实现。例如,...

    mysql取得两个时间之间的差值

    在计算时间差之前,应先判断是否为NULL,可使用 `IFNULL()` 或 `COALESCE()` 函数将NULL转换为一个默认值。 6. **实际应用示例**: 假设我们有一个名为`orders`的表,其中包含`order_date`和`delivery_date`两个...

    mysql 查询本周、上周、本月

    查询上个月的数据同样可以通过比较月份的方式来实现,只需要将当前时间减去一个月的时间差: ```sql SELECT name, submittime FROM enterprise WHERE date_format(submittime, '%Y-%m') = date_format(DATE_SUB...

    mysql计算时间差函数

    MySql计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的...

    MySQL时间日期相关函数

    MySQL时间日期相关函数是数据库操作中的重要组成部分,用于处理与日期和时间相关的数据。在MySQL中,这些函数提供了丰富的功能,包括获取当前日期和时间、格式化日期、时间间隔计算以及进行日期时间的比较等。以下是...

    在php和MySql中计算时间差的方法详解_.docx

    在PHP和MySQL中计算时间差是一项常见的任务,尤其在处理日期相关的业务逻辑时。这篇文章将详细介绍如何在两者中实现这一功能。 在PHP中,计算时间差通常涉及到日期和时间的处理函数。`mktime()`是一个非常有用的...

    在php和MySql中计算时间差的方法

    通过上述方法,在php和MySQL环境下都可以方便地计算出两个日期之间的时间差。在实际的应用中,选择哪种方法取决于具体的应用场景和环境设置。在数据库环境中,MySQL和MSSQL分别提供了方便的内置函数来处理日期差的...

    MySQL时间日期格式化

    ### MySQL时间日期格式化知识点详解 #### 一、概述 MySQL作为一款广泛使用的数据库管理系统,提供了丰富的日期和时间处理函数,使得开发人员能够方便地进行日期时间的数据操作。本文将重点介绍MySQL中与时间日期...

    mysql的日期和时间函数.rar

    在这个“mysql的日期和时间函数”教程中,我们将深入探讨这些关键功能。 1. **日期和时间类型** MySQL支持多种日期和时间数据类型,如DATE(仅日期)、TIME(仅时间)、DATETIME(日期和时间)和TIMESTAMP(时间戳...

    MySQL常用函数大全

    - **计算两个日期间的月份数差**: - `SELECT PERIOD_DIFF(200302, 199802);` #### 示例查询 - **计算年龄**: - `SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(birthday)), '%Y') + 0 AS age FROM ...

    Mysql常用函数列表

    - 功能:返回`time1`和`time2`之间的时间差。 - 示例:`TIMEDIFF('2018-01-01 10:00:00', '2018-01-01 09:00:00')`将返回`'01:00:00'`。 24. **TIME_TO_SEC(time)** - 功能:将时间转换为秒数。 - 示例:`TIME_...

    mysql5.6官网内置函数

    - MOD():返回两个数相除的余数。 2. 字符串函数: - CONCAT():连接两个或多个字符串。 - SUBSTRING():从字符串中提取子串。 - LENGTH():返回字符串的长度。 - REPLACE():在字符串中替换特定字符或子串。 ...

    很详细全面的mysql日期比较

    这里的`NOW()`函数返回当前的日期和时间,而`TO_DAYS()`则将这个日期时间转换为天数。通过计算两个日期之间的天数差,我们就能很容易地判断出某个日期是否在过去30天内。 #### 2. `DAYOFWEEK()`与`WEEKDAY()`函数 ...

    MySQL日期数据类型、MySQL时间类型使用总结

    - **计算两个日期之间的时间差** ```sql SELECT TIMEDIFF('2000-01-31 23:59:59', '2000-01-01 00:00:00'); -- 返回 "743:59:59" SELECT TIMEDIFF('2000-01-01 00:00:00', '2000-01-31 23:59:59'); -- 返回 "-...

    mysql日期函数总结

    - **DATEDIFF(date1, date2)**: 计算两个日期之间的天数差。 ```sql SELECT DATEDIFF(NOW(), '2008-08-08'); ``` - **DATE_ADD(date, INTERVAL expr type)**: 向指定日期添加指定的时间间隔。 ```sql SELECT ...

    MySQL时间函数.doc

    15. `PERIOD_ADD(P, N)`:在阶段P(格式为YYMM或YYYYMM)上增加N个月,并返回更新后的阶段值。 16. `PERIOD_DIFF(P1, P2)`:计算阶段P1和P2之间的月数差,P1和P2应以YYMM或YYYYMM格式给出。 17. `DATE_ADD(date, ...

    mysql 时间函数

    这些函数允许开发者执行各种操作,包括提取日期部分、计算时间差、格式化日期和时间、以及进行日期时间的比较和转换。以下是对MySQL时间函数的详细解释: 1. **日期和时间类型**:MySQL支持多种日期和时间类型,如...

Global site tag (gtag.js) - Google Analytics