1、查询年龄段

小于20

//查询小于20岁的人的个数,DATE_FORMAT(birthday, '%Y')其中的birthday就是数据库的生日这个date类型字段

String hql20="SELECT id, birthday,DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birthday, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birthday, '00-%m-%d')) AS age from hrd_staff where status=? and company=? group by id having age< ?";

List list20=staffService.findBySql(hql20, status,company,20);

大于等于20 小于25

//25

String hql30="SELECT id, birthday,DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birthday, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birthday, '00-%m-%d')) AS age from hrd_staff where status=? and company=? group by id having age >=? and age";

List list30=staffService.findBySql(hql30, status,company,20,25);

2、查询星座

( DATE_FORMAT(birthday,'%m-%d') 其中的birthday就是数据库中的生日字段

// #摩羯座

String moxie = "select id,birthday from hrd_staff where ( ( DATE_FORMAT(birthday,'%m-%d')>'12-22' and DATE_FORMAT(birthday,'%m-%d')'01-01' and DATE_FORMAT(birthday,'%m-%d')

// # 射手座

String sheshou = "select id,birthday from hrd_staff where DATE_FORMAT(birthday,'%m-%d') >'11-23' and DATE_FORMAT(birthday,'%m-%d')

// #天蝎座

String tianxie = "select id,birthday from hrd_staff where DATE_FORMAT(birthday,'%m-%d') >'10-24' and DATE_FORMAT(birthday,'%m-%d')

// #天秤座

String tianchegn = "select id,birthday from hrd_staff where DATE_FORMAT(birthday,'%m-%d') >'09-23' and DATE_FORMAT(birthday,'%m-%d')

// #处女座

String chunv = "select id,birthday from hrd_staff where DATE_FORMAT(birthday,'%m-%d') >'08-23' and DATE_FORMAT(birthday,'%m-%d')

// #狮子座

String shizi = "select id,birthday from hrd_staff where DATE_FORMAT(birthday,'%m-%d') >'07-23' and DATE_FORMAT(birthday,'%m-%d')

// #巨蟹座

String juxie = "select id,birthday from hrd_staff where DATE_FORMAT(birthday,'%m-%d') >'06-22' and DATE_FORMAT(birthday,'%m-%d')

// #双子座

String shuangzi = "select id,birthday from hrd_staff where DATE_FORMAT(birthday,'%m-%d') >'05-21' and DATE_FORMAT(birthday,'%m-%d')

// #金牛座

String jinniu = "select id,birthday from hrd_staff where DATE_FORMAT(birthday,'%m-%d') >'04-20' and DATE_FORMAT(birthday,'%m-%d')

// #白羊座

String baiyang = "select id,birthday from hrd_staff where DATE_FORMAT(birthday,'%m-%d') >'03-21' and DATE_FORMAT(birthday,'%m-%d')

// #双鱼座

String shaugnyu = "select id,birthday from hrd_staff where DATE_FORMAT(birthday,'%m-%d') >'02-19' and DATE_FORMAT(birthday,'%m-%d')

// #水瓶

String shuipin = "select id,birthday from hrd_staff where DATE_FORMAT(birthday,'%m-%d') >'01-20' and DATE_FORMAT(birthday,'%m-%d')

3、最近7天生日的sql

int bwt=7;

//现在日期

String nowdate=DateUtil.getNow();

// 截取月日

String wnowdate=nowdate.substring(5, 10);

//获取7天后的日期

String after=DateUtil.getAfterDay(new Date(), bwt);

//截取月日

String wafter=after.substring(5, 10);

//截取月 判断是否是跨年,如果跨年则月份有可能会小于之后几天的 就比如 12.28 七天后就是01.04 这样就是月份很小了

String ny=wnowdate.substring(0,2);

String ay=wafter.substring(0,2);

int iny=Integer.valueOf(ny);

int iay=Integer.valueOf(ay);

//跨年查询

String y12="12-31";

String y1="01-01";

// 跨年查询,因为是生日,之和月份和日期有关和年没关系

if(iny>iay){

//跨年查询sql

hql+=" and ((DATE_FORMAT( birthday , '%m-%d') > '"+wnowdate+"' and DATE_FORMAT( birthday , '%m-%d') <= '"+y12+"') or (DATE_FORMAT( birthday , '%m-%d') >= '"+y1+"' and DATE_FORMAT( birthday , '%m-%d') < '"+wafter+"'))";

}else{

//正常查询sql

hql+=" and DATE_FORMAT( birthday , '%m-%d') > '"+wnowdate+"' and DATE_FORMAT( birthday , '%m-%d') < '"+wafter+"'";

}

4、获取两个日期间的天数

/**

* 两个时间参数,月 日之间的天数

* @param min

* @param max

* @return

*/

public static int days(Date min,Date max){

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

//获取日期

String s1=sdf.format(min);

String s2=sdf.format(max);

//截取月份

String mm1=s1.substring(5, 7);

String mm2=s2.substring(5, 7);

//截取日期

String dd1=s1.substring(8, 10);

String dd2=s2.substring(8, 10);

//月份

int intmm1=Integer.valueOf(mm1);

int intmm2=Integer.valueOf(mm2);

//日期

int intdd1=Integer.valueOf(dd1);

int intdd2=Integer.valueOf(dd2);

int days=0;

// 吧下面的 DAY_OF_YEAR 改为 DAY_OF_MONTH 因为每年的日期不同所以不同年的同一个月的时间不一样

if(intmm1

Calendar aCalendar = Calendar.getInstance();

aCalendar.setTime(min);

int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);

aCalendar.setTime(max);

int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);

days= day2-day1;

}else if(intmm1==intmm2){

if(intdd2>intdd1){

Calendar aCalendar = Calendar.getInstance();

aCalendar.setTime(min);

int day1 = aCalendar.get(Calendar.DAY_OF_MONTH);

aCalendar.setTime(max);

int day2 = aCalendar.get(Calendar.DAY_OF_MONTH);

days= day2-day1;

}else{

Calendar aCalendar = Calendar.getInstance();

aCalendar.setTime(max);

int day1 = aCalendar.get(Calendar.DAY_OF_MONTH);

aCalendar.setTime(min);

int day2 = aCalendar.get(Calendar.DAY_OF_MONTH);

days= day2-day1;

}

}else{

Calendar aCalendar = Calendar.getInstance();

aCalendar.setTime(max);

int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);

aCalendar.setTime(min);

int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);

days= day2-day1;

}

//System.out.println("s1:"+s1 +" s2:"+s2 +" days:"+days);

return days;

} 这个时间就只能这样笨办法写了在这里也看到了一篇文章:https://my.oschina.net/u/1454838/blog/750356

mysql 星座_mysql 查询年龄段,星座以及最近7天生日的sql相关推荐

  1. mysql 执行查询_MySQL查询的执行过程

    我们总是希望MySQL能够获得更高的查询性能,最好的办法是弄清楚MySQL是如何优化和执行查询的.一旦理解了这一点,就会发现:很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的 ...

  2. mysql查询字段不为数字_MySQL查询指定字段不是数字与逗号的sql

    核心sql语句 MySQL查询不包含数字的语句: SELECT * FROM test WHERE `name` regexp '[^0-9]'; MySQL查询纯数字的语句: SELECT * FR ...

  3. 查看MySQL句柄_mysql查询语句-handler

    1 简介 mysql除可使用select查询表中的数据,也可使用handler语句,这条语句使我们能够一行一行的浏览一个表中的数据,不过handler语句并不具备select语句的所有功能.它是mys ...

  4. mysql 交集_MySQL 查询结果取交集的实现方法

    1 MySQL中如何实现以下SQL查询 (SELECT S.Name FROM STUDENT S, TRANSCRIPT T WHERE S.StudId = T.StudId AND T.CrsC ...

  5. 查mysql结构_Mysql查询架构信息

    今天想给整个数据库做初始化,也就是清空所有表,然后让索引归零,使用truncate table 就可以,但好多张表,怎么批量搞定呢? 有人说重建表吧,dump一下,然后再重建,但我还是想用trunca ...

  6. php嵌套查询mysql语句_mysql 查询嵌套

    问题描述 为使讨论简单易懂,我将问题稍作简化,去掉诸多的背景. 从前有一个皇帝,他有50个妃子,这些妃子很没有天理的给他生了100,000个儿子,于是,皇帝很苦恼,海量的儿子很难管理,而且,他想知道每 ...

  7. mysql 留存率_mysql查询用户留存语法(用户留存和用户留存率问题)

    1.创建表 CREATE TABLE `user_log` ( `device_id` varchar(11) CHARACTER SET latin1 COLLATE latin1_swedish_ ...

  8. mysql前一天_mysql查询当天,前一天,一周,一个月

    最近一个月 SELECT * FROM table WHERE DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(time); 本月.当前月 SELEC ...

  9. mysql 通知_mySql查询-系统公告发布接收人情况

    -- display_name NZ分部所有用户 SELECT user_code,display_name FROM scy_user WHERE ou_id=1627 AND is_deleted ...

最新文章

  1. Aria2打造属于自己的下载神器
  2. 魏少军谈AI芯片热潮和架构创新 透露清华Thinker芯片将独立融资
  3. Android学习:自定义ViewGroup方法总结
  4. 自定义控件的时候为控件增加事件
  5. html5 数据验证,【译】表单数据校验
  6. ffmpeg-简单AES加解密记录
  7. 【学习笔记】第二章——管程(解决生产者消费者问题、封装、Java 体现)
  8. centos的防火墙配置
  9. PictureBox滚动条、鼠标中轴滚动
  10. jq数组清空_JQuery 数组获取和删除元素
  11. python办公软件教程书籍_针对office办公软件初学者有什么推荐书籍?
  12. python源代码怎么用_Python写完代码怎么用
  13. DeeCamp 2019 Exam A 纪实
  14. 发红包的程序代码java_Java实现微信发红包
  15. shell-脚本入门
  16. 二进制以上的计算机,计算机中的二进制
  17. 网上如何赚钱?教你利用知识变现来赚钱!
  18. 模糊神经网络(三)模糊逻辑和神经网络的对比
  19. 为什么公司宁可高薪招一个新员工,也不愿意给老程序员涨一点工资?
  20. 语言库函数大全--资料收集整理

热门文章

  1. android 常用的代码
  2. 【Java】练习题库 单选题
  3. 系统工程师学习(简单Linux命令应用)(一)
  4. 「HNOI2004」 宠物收养所 - 平衡树Splay
  5. Xswap:Web 3.0时代跨链聚合闪兑赛道的黑马
  6. 微机原理与接口技术[第三版]——第五章课后习题答案
  7. 测试术语-测试用例分类
  8. 用Excel进行基金业绩评价
  9. 局域网内配置Outlook 2007支持收发Domino 8.5邮箱
  10. android开发之Launcher icon(启动图标)的设计