菜单

sql语句子获取皓天、昨天、近7天、本周、上周、本月、上月、半年数据

2019年5月27日 - 188金博宝网址

  sql语句子获取皓天、昨天、近7天、本周、上周、本月、上月、半年数据

  话说拥有壹文字表article,存放储文字的添加以文字的时间是add_time字段,该字段为int(5)典型的,即兴需寻求查询皓天添加以的文字尽额同时依照时间从父亲到小排前言,则查询语句子如次:

  ?

  ? ?1 ? ?select * from `article` where date_format(from_UNIXTIME(`add_time`),’%Y-%m-%d’)=date_format(now(),’%Y-%m-%d’);

  ? ?容许:

  ?

  ? ?1 ? ?select * from `article` where to_days(date_format(from_UNIXTIME(`add_time`),’%Y-%m-%d’))=to_days(now());

  ? ?假定以上表的add_time字段的存放储典型是DATETIME典型容许TIMESTAMP典型,则查询语句子也却按如次写法:

  ?

  ? ?查询皓天的信息记载:

  ?

  ? ?1 ? ?select * from `article` where to_days(`add_time`)=to_days(now());

  ? ?查询昨天的信息记载:

  ?

  ? ?1 ? ?select * from `article` where to_days(now()) – to_days(`add_time`) <=1;

  ? ?查询近7天的信息记载:

  ?

  ? ?1 ? ?select * from `article` where date_sub(curdate(), INTERVAL 7 DAY) <=date(`add_time`);

  ? ?查询近30天的信息记载:

  ?

  ? ?1 ? ?select * from `article` where date_sub(curdate(), INTERVAL 30 DAY) <=date(`add_time`);

  ? ?查询本月的信息记载:

  ?

  ? ?1 ? ?select * from `article` where date_format(`add_time`, ‘%Y%m’)=date_format(curdate() , ‘%Y%m’);

  ? ?查询上壹月的信息记载:

  ?

  ? ?1 ? ?select * from `article` where period_diff(date_format(now() , ‘%Y%m’) , date_format(`add_time`, ‘%Y%m’))=1;

  ? ?对下面的SQL语句子中的几个函数做壹下剖析:

  ?

  ? ?(1)to_days

  ?

  ? ?就像它的名字壹样,它是将详细的某壹个日期或时间字符串替换到某壹天所对应的unix时间戳,如:

  ?

  ? ?01 ? mysql> select ?to_days(‘2010-11-22 14:39:51’); ?

  ? ?02 ? ?+——————————–+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

  ? ?03 ? | to_days(‘2010-11-22 14:39:51’) |

  ? ?04 ? +——————————–+

  ? ?05 ? | ? ? ? ? ? ? ? ? ? ? ? ? 734463 |

  ? ?06 ? +——————————–+

  ? ?07

  ? ?08 ? mysql> select ?to_days(‘2010-11-23 14:39:51’);

  ? ?09 ? +——————————–+

  ? ?10 ? | to_days(‘2010-11-23 14:39:51’) |

  ? ?11 ? +——————————–+

  ? ?12 ? | ? ? ? ? ? ? ? ? ? ? ? ? 734464 |

  ? ?13 ? +——————————–+

  ? ?却以看出产22日与23日的差异坚硬是,替换之后的数添加以了1,此雕刻个粒度的查询是比较粗毛糙的,拥偶然能不能满意我们的查询要寻求,这么就需寻求运用细粒度的查询方法str_to_date函数了,下面将剖析此雕刻个函数的用法。

  ?

  ? ?提示:

  ?

  ? ?(1)to_days() 不用于太阳历出产即兴(1582)前的值,缘由是当天历改触动时,遗违反的日期不会被考虑在内。故此关于1582 年之前的日期(容许在其它地区为下壹年 ), 该函数的结实实不牢靠的。

  ? ? ?

  ? ?(2)MySQL”日期和时间典型”中的规则是将日期中的二位数年份值转募化为四位。故此关于’1997-10-07’和’97-10-07’将被视为异样的日期:

  ?

  ? ?1 ? ?mysql> select to_days(‘1997-10-07′), to_days(’97-10-07’);

  ? ?2 ? ?

  ? ?3 ? ?-> 729669, 729669

  ? ?(2)str_to_date

  ?

  ? ?此雕刻个函数却以把字符串时间完整顿的翻译度过去,如:

  ?

  ? ?1 ? ?mysql> select str_to_date(“2010-11-23 14:39:51”,’%Y-%m-%d %H:%i:%s’);

  ? ?2 ? ?

  ? ?3 ? ?+——————————————————–+

  ? ?4 ? ?| str_to_date(“2010-11-23 14:39:51”,’%Y-%m-%d %H:%i:%s’) |

  ? ?5 ? ?+——————————————————–+

  ? ?6 ? ?| 2010-11-23 14:39:51 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|

  ? ?7 ? ?+——————————————————–+

  ? ?详细案例操干如次:

  ?

  ? ?1 ? ?select str_to_date(article.`add_time`,’%Y-%m-%d %H:%i:%s’)

  ? ?2 ? ?from article

  ? ?3 ? ?where str_to_date(article.`add_time`,’%Y-%m-%d %H:%i:%s’)>=’2012-06-28 08:00:00′ and str_to_date(article.`add_time`,’%Y-%m-%d %H:%i:%s’)<='2012-06-28 09:59:59';

  ?

  查询

  皓天

  select * from 表名 where to_days(时间字段名)=to_days(now()); ?

  昨天

  ?

  SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 时间字段名) <=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 DATE_FORMAT( 时间字段名, ‘%Y%m’ )=DATE_FORMAT( CURDATE( ) , ‘%Y%m’ ) ?

  上壹月

  ?

  SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , ‘%Y%m’ ) , date_format( 时间字段名, ‘%Y%m’ ) )=1 ?

  同时,又附上 壹个 mysql官方的相干document

  #查询本季度数据

  select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(now());

  #查询上季度数据

  select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));

  #查询当年数据

  select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW());

  #查询去年数据

  select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval 1 year));

  ?

  查询以后此雕刻周的数据?

  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 下月第壹天

  where ? date(regdate) ?=? curdate();

  select ? * ? from ? test ? where ? year(regdate)=year(now()) ? and ? month(regdate)=month(now()) ? and ? day(regdate)=day(now())

  SELECT date( c_instime ) ,curdate( )

  FROM `t_score`

  WHERE 1

  LIMIT 0 , 30

  转己https://www.cnblogs.com/xiaoqian1993/p/5260789.html

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注