MySQL 查询本日、昨日、本月、上月、本季度、上季度、近7天、近30天数据

  • 查询当天的所有数据
SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())=0;

select * from 表名 where to_days(字段) = to_days(now());
  • 查询昨天的所有数据
SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())=-1;


select * from 表名 where to_days(now())-to_days(字段) == - 1;
  • 查询本月的所有数据
SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
  • 查询上一月的所有数据
SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1
  • 查询近7天的所有数据

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名); 
  • 查询近30的所有数据

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名);
  • 查询本周的所有数据
//本周第一天为周日
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now());

//本周第一天为周一
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d'),1) = YEARWEEK(now(),1);
  • 查询上周的所有数据
//上一周第一天为周日
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now())-1;

//上一周第一天为周一
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d'),1) = YEARWEEK(now(),1)-1;
  • 查询本季度的所有数据

select * from 表名 where QUARTER(时间字段名)=QUARTER(now());
  • 查询上季度的所有数据

select * from 表名 where QUARTER(时间字段名)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
  • 查询本年的所有数据

select * from 表名 where YEAR(时间字段名)=YEAR(NOW());
  • 查询上年的所有数据

select * from 表名 where year(时间字段名)=year(date_sub(now(),interval 1 year));

 

MYSQL DATEDIFF() 函数说明:


 

DATEDIFF() 函数用于返回两个日期之间的天数。 语法:DATEDIFF(date1,date2) date1 和 date2
参数是合法的日期或日期/时间表达式。 注释:
1. 只有值的日期部分参与计算。
2. 当日期date1时函数返回值为正数,date1=date2时函数返回值为0,date1>date2 时函数返回值为负数。
3. Mysql的DATEDIFF只有两个参数。SQL Server有三个参数,详细内容可见:SQL Date函数

 


 

MYSQL DATE_FORMAT() 函数说明:

 


  • 定义和用法

DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。

  • 语法

DATE_FORMAT(date,format)

date 参数是合法的日期。format 规定日期/时间的输出格式。

可以使用的格式有:

格式 描述
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时(00-23)
%h 小时(01-12)
%I 小时(01-12)
%i 分钟,数值(00-59)
%j 年的天(001-366)
%k 小时(0-23)
%l 小时(1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时(hh:mm:ss)
%U 周(00-53)星期日是一周的第一天
%u 周(00-53)星期一是一周的第一天
%V 周(01-53)星期日是一周的第一天,与 %X 使用
%v 周(01-53)星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天(0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位
  • 实例

下面的脚本使用 DATE_FORMAT() 函数来显示不同的格式。我们使用 NOW() 来获得当前的日期/时间:

DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')

DATE_FORMAT(NOW(),'%m-%d-%Y')

DATE_FORMAT(NOW(),'%d %b %y')

DATE_FORMAT(NOW(),'%d %b %Y %T:%f')

 

MYSQL DATE_SUB()函数说明:


  • 定义和用法

DATE_SUB() 函数从日期减去指定的时间间隔。

  • 语法

DATE_SUB(date,INTERVAL expr type)

date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

type 参数可以是下列值:

Type 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

你可能感兴趣的:(SQL,sql,数据库)