mysql 根据条件查询数据

在用户表中,有一个生日字段 birth,现在的需求是根据传入的时间段参数,查询此时间段内过生日的用户列表,需要考虑跨年的情况

7个回答

查这些时间段的数据不需要考虑这些吧,我一直使用这个,没有出错过:http://blog.csdn.net/xuanzhangran/article/details/54708246

select * from 用户 where brith >= starttime and birth <= endtime

birth和时间段参数的格式一致就好了

如果你的业务,确实需要对跨年,请参考这个链接:http://blog.csdn.net/xuanzhangran/article/details/55666878

不需要考虑什么跨不跨年,直接传进时间,一样的时间格式进行查询

生日的判断标准是 几月几号 , 如果传入的时间段是同一年 比如说 2017-05-23 到 2017-06-23 直接取出月日比较肯定没问题啊,但是如果跨年了,就不好控制了,比如 2017-05-23 到 2018-02-01 这个时间段的话,就应该去查 05-23到12-31过生日的 和 01-01到 02-01过生日的

涉及到时间查询,最准确最稳妥的做法是使用DATEDIFF函数,如
StringBuilder sb = new StringBuilder();
sb.Append(" SELECT * FROM USERINFO WHERE 1=1");
sb.Append(" AND DATEDIFF(DAY,'{0}',birth)>=0", startTime);
sb.Append(" AND DATEDIFF(DAY,'{0}',birth)< 0", endTime);

其中,DATEDIFF函数最前边一个参数
DATEDIFF(YEAR,'',''),精确到年;
DATEDIFF(MONTH,'',''),精确到月;
DATEDIFF(DAY,'',''),精确到日;
DATEDIFF(HUOR,'',''),精确到小时;
DATEDIFF(MINUTE,'',''),精确到分;

等等,可以根据具体情况使用,你这个情况应该精确到日就可以了

根据你的需求,创建数据如下:![图片说明](https://img-ask.csdn.net/upload/201705/23/1495527838_271628.jpg)
有两个分支:
先判断传入的时间段参数前后大小关系,如果后者比前者时间大,则涉及跨年的问题,应该执行
select * from user where substring(birthday,6)>='09-01'   or   substring(birthday,6)<='06-01';
否则,执行
select * from user where substring(birthday,6)>='02-01'   and   substring(birthday,6)<='06-01';
zhumengstyle
zhumengstyle 笔误,如果后者比前者小,则涉及跨年问题
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mysql根据日期查询数据
 数据库中时间字段是mytime,date类型: //查询当天的数据 @Select(&quot;select * from table where DATE_FORMAT(mytime,'%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d') &quot;) //查询昨天数据 @Select(&quot;select * from table where DATE_FORMAT...
MySql根据时间查询数据
前言 项目业务实现需要查询本日,本周,本月数据; 看到此需求,第一想法是去获取当前时间戳,然后计算出时间截止时间,然后传入SQL查询区间数据;相对比较繁琐,查询各路大神对此类需求的实现,发现更好的方法,特记录如下,以便再次遇到此类需求,同时为广大网友提供参考 SQL编写 -- 查询本周数据 SELECT * FROM t_user WHERE YEARWEEK(date_format(add_ti...
mysql根据时间戳查询数据
比如我们要查询每天的注册用户数量,这里我们的注册时间是时间戳的话。我们写的sql语句就得把时间转换为日期进行查询。sql语句如下: 函数:FROM_UNIXTIME"select count(*) user_regnumber,FROM_UNIXTIME('reg_time',"%Y-%m-%d") as group_date from users where status=1 group by
Spark从Mysql中根据条件查询数据并写入到Mongodb
Spark支持的数据源非常之多,例如textfile,Hive,jdbc,sequence file等等,这里我想展示的是一个从Mysql中读取数据经过处理分析后存入Mongodb的例子。语言自然是Scala,下面直接放上代码: package com.test import com.mongodb.{MongoClient, MongoClientURI} import org.apach...
mysql查询数据,根据条件更新到另一张表
原本的数据库有3张表 travel_way :旅游线路表,存放线路的具体信息 traveltag :线路标签表,存放线路目的地等信息 tagrelation:标签对应表,存放线路和目的地的对应关系 因为业务逻辑的改变,现在要把它们合并为一张表,把traveltag中的目的地信息插入到travel_way中。首先获取到所有线路对应的目的地,以线路ID分组,合并目的地到一行,以逗号分隔。SELECT t
求一SQL,根据条件查询数据
表结构rnrnid newNumber oldNumber rn1001 1 nullrn1002 2 nullrn1003 3 7rnrnselect * from table的结果是newNumber和oldNumber都查询出来了rn但只想要一个number:rnid numberrn1001 1rn1002 2rn1003 7rnrnnumber:oldnumber如果为null的话就取oldNumber不存在的话就取newNumber
Guns根据条件查询数据_入门试炼04
一、找到Controler,对方法进行修改即可实现 二、修改list方法 修改钱的方法: /** * 获取房屋管理列表 * *wrapper 条件 */ @RequestMapping(value = "/list") @ResponseBody public Object list(String condition) { ...
Mysql根据条件批量更新动态数据
当表字段需要根据id进行更新的时候,如果有多条数据需要根据对应的id更新,那么就可以考虑动态更新。 假设需要更新表中的state状态字段,以及需要根据对应的id更新表中的number字段。直接上代码 java代码部分:写java代码部分是为了更好的理解参数在sql语句中是怎样被封装进去的。         @Responsebody         @R
mysql 根据条件统计数据量
目录 需求:统计总数,未完成数和完成数 方法一: 方法二: 总结: CREATE TABLE `test_task` ( `id` int(11) NOT NULL AUTO_INCREMENT, `done` tinyint(1) DEFAULT NULL COMMENT '是否完成', `doneTime` int(11) DEFAULT NULL COMMENT '完...
[MySQL]根据条件UPDATE数据
1、第一种:使用b表数据更新a表 update Player as a ,PlayerSet as b set a.role_id=b.set_value  where a.role_id=b.set_key 2、第二种:也是使用b表数据更新a表,只是方法不一样 update RoleSet set_key=(SELECT name FROM Player where id = Rol...
MySQL关于根据日期查询数据的sql语句
查询往前7天的数据: select * from 数据表 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) 查询往前30天的数据: select * from 数据表 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) 查询在某段日期之间的数据: select * from 数据表 where 时间字段名
Hibernate_Criteria条件查询数据
上传的资料都是非常经典的,这也是我学习过程中的心得,希望大家能给我指点,也希望大家多上传资料共同学习。千万不要传空文件夹。。。
依条件查询数据
“状态”,“申请人”,“开始时间”,“结束时间”作为查询条件,且这些条件都可以为空。rn按照以往的作法,要判断好多种情况,要写一大堆判断语句。现在想请问有没有其他的更好的方法。谢谢!rnrn状态【 】rn申请人【 】rn开始时间【 】结束时间【 】rnrn[size=14px]查询[/size][color=#0000FF][/color]rn
按条件分组查询数据
有一个数据库,结构如下:rnrnid title typeidrn1 hu 1rn2 hhh 1rn3 xxx 2rn4 yyy 2rn5 hux 2rn6 hhh 4rn7 hu 4rn8 hhh 4rn9 hu 1rn10 hhh 1rn11 xxx 2rn12 yyy 2rn13 hux 2rn14 hhh 3rn1 hu 3rn2 hhh 3rnrn我想实现:按照typeid=1,typeid=2,typeid=3,typeid=4 分组,每个条件选出3条数据输出,我想用一条SQL语句实现,应该怎么实现?求救大家了,谢谢。
多个条件的查询数据
bh kz01 kz02 kz03 kz04 rn1 user1 1 rn2 user2 0rn3 user2 1 rn3 user3 1rn4 user3 0rnrn数据库里面是这样的rn现在想搜索出 kz02是1 还有把kz01='user2'的记录也搜索出来rn因为表字段里面有text类型的,所以union 不能用rn除了用union外,还有别的方法吗?rn大家指教了
条件查询数据窗口问题
string v_ym, v_retail_cat_id, v_sql, v_old_sql, v_bz, v_retail_cat_name,v_title,v_flag,v_retail_category_id,xianjurnlong title_width,columnsrn// Year & Monthrnif integer(em_statistics_month.text) > 9 thenrn v_ym = em_statistics_year.text + em_statistics_month.textrnelsern v_ym = em_statistics_year.text + "0" + em_statistics_month.textrnend ifrn// Papers & MagazinesrnIf rb_1.Checked Then rn v_flag = '0' // papersrn v_bz = '报纸'rnEnd IfrnIf rb_2.Checked Then rn v_flag = '1' // magazinesrn v_bz = '杂志'rnEnd IfrnIf rb_3.Checked Then rn v_retail_category_id='01'rn v_bz='邮发'+v_bzrnelseif rb_4.checked thenrn v_retail_category_id='03'rn v_bz='代销'+v_bzrnelseif rb_5.checked thenrn v_retail_category_id='02'rn v_bz='特发'+v_bzrnEnd Ifrnv_title=v_ym+'月'+v_bz+'各单位每天到货款'rnrn// Assing text contentrndw_arrived_sheet_report.modify("title.text='"+v_title+"'")rnselect count(distinct order_date) into :columns FROM arrived_sheetrn WHERE ARRIVED_SHEET.SHEET_MONTH = :v_ym AND rn f_get_bkzl(bkdh,substr(period_number,1,4)) = :v_flag AND rn arrived_sheet.amount <> 0 and retail_category_id=:v_retail_category_id; rn rntitle_width=long(dw_arrived_sheet_report.object.grand_sum_account.x)rntitle_width=title_width+long(dw_arrived_sheet_report.object.grand_sum_account.width)rntitle_width=title_width+(columns -1)*long(dw_arrived_sheet_report.object.account.width)rndw_arrived_sheet_report.object.title.width=title_widthrndw_arrived_sheet_report.object.date.width=title_widthrndw_arrived_sheet_report.object.grand_sum_account.widthrndw_arrived_sheet_report.retrieve(v_ym,v_flag,v_retail_category_id)rndw_arrived_sheet_report.object.mfactaccount.visible=0 rndw_arrived_sheet_report.object.magio.visible=0rnrn*********************重点重点*重点重点重点重点重点重点**********************************************************************************rn if rb_7.checked then rn//-------------------------------------------------------------------------- rn// int li_col //显示所有的列名rn// string ls_namern// for li_col = 1 to long(dw_arrived_sheet_report.object.datawindow.column.count)rn// ls_name = dw_arrived_sheet_report.describe("#"+string(li_col)+".name")rn// messagebox("column name",ls_name)rn// nextrn//----------------------------------------------------------------------------rn xianju='10'rn dw_arrived_sheet_report.setfilter("company_company_category_id<>'"+xianju+"'")rn dw_arrived_sheet_report.filter()rn end ifrnrnif rb_8.checked then rn xianju='10'rn dw_arrived_sheet_report.setfilter("company_company_category_id='"+xianju+"'")rn dw_arrived_sheet_report.filter()rn end if rnrnrn最后那处执行时,总是全部显示了所以数据,不能按company_company_category_id='"+xianju+"'来,并且报“Expression is not valid”,求指教
查询数据——条件查询(逻辑条件)
注重实践,剔除繁琐的理论,通过案例讲解我们常用的知识点,各个知识点之间相对独立,不用担心某一个知识点学不会而耽搁学其他的知识点。轻轻松松入门Mysql。
水晶报表条件查询数据案例
这是以年月条件查询的报表Demo,里面的公式可以供参考
MySQL 查询数据
1 查询所有字段 1.1 使用*通配符查询所有字段 SELECT * FROM 表名 1.2 在SELECT语句中指定所有字段 SELECT id,name from users; 2 查询指定字段 2.1 查询单个字段 SELECT 列名 FROM 表名; 2.2 查询多个字段 SELECT 列名1,列名2,列名3 ...列名n from 表名 2.3 查询指定记录 SEL...
mysql查询数据
查询数据指从数据库中获取所需要的数据。查询数据是数据库操作中最常用,也是最重要的操作。用户可以根据自己对数据的需求,使用不同的查询方式。通过不同的查询方式,可以获得不同的数据。MySQL中是使用SELECT语句来查询数据的。 基本查询语句       查询数据是数据可以操作中最最常用的操作。通过对数据库的操作,用户可以从数据库中获取需要的数据。数据库中可能包含着无数的表,表中可能包含着无数的记
MySQL查询数据
students表存储了学生信息: id class_id name gender score 1 1 小明 M 90 2 1 小红 F 95 3 1 小军 M 88 4 1 小米 F 73 5 2 小白 F 81 6 2 小兵 M 55 7 2 小林 M 85 8 3 小新 F 91 9 3 小王 M 89 10 3 小丽 F 85 cla...
【MySQL】查询数据
目录 7.2  单表查询 7.3  使用集合函数查询 7.4  连接查询 7.5  子查询 7.6  合并查询结果 7.7  为表和字段取别名 7.8  使用正则表达式查询 MySQL从数据表中查询数据的基本语句为SELECT语句。 SELECT [不重复distinct] 字段 FROM 表名 WHERE/GROUP BY [HAVING] +[条件]+[升降序]; SE...
根据字段名查询数据?
小弟现遇到的问题是在web页面上选择了相应的项后从数据库里面查不出数据来。请各位前辈们帮我看看,谢谢先!rnrn小弟先在BCB6中新建了一个CGI应用程序。rn在webmodule上加了TQuery和TDataSetTableProducer。rnTQuery的设置:rnDatabaseName: BCDEMOSrnSQL: select * from employeernActive=truernTDataSetTableProducer的设置:rnDataSet=Query1rn在Columns中能预览到数据。rn然后我在Object TreeView里面Add All Fields。rn然后在webmodule增加ActionItem,并且把Default设为true,Enabled设为true。rn然后在events里面双击OnAction找到函数体。rnrn下面是OnAction的代码:rnAnsiString temp1, temp2;rnrnQuery1->Close();rnQuery1->SQL->Clear();rnQuery1->SQL->Add("select * from employee");rntemp1 = Request->QueryFields->Values["fd"];rntemp2 = "'" + Request->QueryFields->Values["vl'] + "'";rnQuery1->SQL->Add(" where " + temp1 + " like " + temp2);rnQuery1->SQL->Add(" order by Salary ");rnQuery1->PrePare();rnQuery1->Open();rnrnif (Query1->RecordCount == 0) rn DataSetTableProducer1->Footer->Add(" 对不起,找不到 ");rn DataSetTableProducer1->Footer->Add("请退回去,重新查询 ");rnrnrnDataSetTableProducer1->MaxRows = Query1->RecordCount;rnResponse->Content = DataSetTableProducer1->Content();rnrnrn下面是网页的代码:rnrnrn GETrnrnrn rn查询列表框选择:rn中文姓名rn英文姓名rn电话rn工资rnrn rn查询值:(可查询相似值)rn rn rnrnrn
根据时间查询数据的问题!
大家好!rn下午我发的那个问题少了条件,现在重新发一个,请大家帮忙解决。rnrn表A:rnrnF1 F2 F3 F4 F5rnAAA CarA 2010-3-1 2010-3-31 2.2rnAAA CarA 2010-4-1 2010-4-30 2.0rnBBB BikeB 2009-3-1 2010-2-28 1.0rnBBB MMB 2010-3-1 2010-3-31 1.0rnBBB MMB 2010-4-1 2010-8-31 1.0rnrn条件一:rn以F1,F2这两列作为分组条件rn条件二:rn判断时间,看2009-12-31是否在F3、F4这两个日期之间,如果在的话,取出来;rn如果对同一个F1、F2,2009-12-31没有在F3、F4之间,就再看F3的时间,如果F3>2009-12-31,就把这条数据取出来,而且只取F3时间最早的那条数据。rnrn例如上面的结果应该为:rnF1 F2 F3 F4 F5rnAAA CarA 2010-3-1 2010-3-31 2.2rnBBB BikeB 2009-3-1 2010-2-28 1.0rnBBB MMB 2010-3-1 2010-3-31 1.0rnrn请教大家如何完成?rnrnrn
根据id查询数据的方法
根据id查询数据的方法 除了where 语句 还可以用其他什么方法查询?
[求教]根据ID查询数据,!!!
请教各位,rnrn 比如 表A中 数据如下:rn id column1 column2rn 2 aa bbrn 3 cc ddrn 5 dd ffrn 9 dd ccrnrn 如果我想 查id=5 的上一条和下一条数据,还有id=5的 ,一共三条 <5的一条, =5的一条 >5的一条rnrn 这SQL 要咋写?
如何根据权重查询数据
[code=sql]rnif object_id('tempdb..#tb') is not nullrn drop table #tbrngorncreate table #tbrn(rn userid int,--会员IDrn wt int --权重,值为1-5之间rn)rngorn rninsert into #tbrnselect 1,2 union allrnselect 2,1 union allrnselect 3,1 union allrnselect 4,3 union allrnselect 5,4 union allrnselect 6,1 union allrnselect 7,1 union allrnselect 8,4 union allrnselect 9,5 union allrnselect 10,3rn rngornrn--请教各位如何实现:有10条数据查询出其中5条,权重越大,被查出的几率越大rn[/code]
根据时间段查询数据的问题
我如何赋两个初始值查询,即一个当前日期和当前日期以前一个月的时间段查询,这样速度较快,另要输入非日期格式显示无记录而不出错,谢谢
mongodb根据_id查询数据
db.courseRecord.findOne({"_id":ObjectId("55c70e51972a75fc8ae91ea7")}); 传入的参数一定为JSON格式
根据多个id查询数据
//根据设备多个id获取设备信息 public List&amp;lt;Devices&amp;gt; getDevicesAll(@Param(&quot;devicesIds&quot;) String[] devicesIds); &amp;lt;select id=&quot;getDevicesAll&quot; resultMap=&quot;BaseResultMap&quot;&amp;gt; select &amp;lt;include re...
根据不同的时间日期查询数据
根据不同的时间段(日,周,月)获取数据
根据时间查询数据的问题?
表1如下:rnrnID Date Date1 Date2 Date3rn1 2009-11-01 2009-11-01 [color=#FF0000]2009-11-02[/color] 2009-11-01rn2 2009-11-01 [color=#FF0000]2009-11-02[/color] 2009-11-01 2009-11-01rn3 2009-11-01 2009-11-01 2009-11-01 2009-11-01rn4 2009-11-01 2009-11-01 2009-11-01 [color=#FF0000]2009-11-02[/color]rn5 2009-10-26 [color=#FF0000]2009-11-01[/color] 2009-10-26 [color=#FF0000]2009-11-01[/color]rn6 2009-10-28 2009-10-28 [color=#FF0000]2009-10-31[/color] 2009-10-28rnrn原本表里面的Date,Date1,Date2,Date3四个日期是一样的,因为某些内容作了更新,所以Date1,Date2,Date3某个或者某几个会做出相应的更新,变为更新数据当日的时间。所以该条数据有没有被更新过,是根据Date1,Date2,Date3三个日期是否和Date日期完全相同来确定的。rnrn现在要求如下,根据运行该查询语句的日期时间来查询有变更的数据:rn1.如果运行该查询语句的日期时间是周二至周六其中的一天,查询出前一天的变更的数据;rn2.如果运行该查询语句的日期时间是周一,查询出前面两天(星期六和星期日)变更的数据;rnrn上面的测试数据,我在2009-11-03运行该查询时,因为2009-11-03是周二,所以它会查询出前一天变更了的数据,运行的结果应该为:rnID Date Date1 Date2 Date3rn1 2009-11-01 2009-11-01 [color=#FF0000]2009-11-02[/color] 2009-11-01rn2 2009-11-01 [color=#FF0000]2009-11-02[/color] 2009-11-01 2009-11-01rn4 2009-11-01 2009-11-01 2009-11-01 [color=#FF0000]2009-11-02[/color]rnrn我在2009-11-02运行该查询时,因为2009-11-02是周一,所以要查询出前两天,即2009-10-31和2009-11-01发生过变更的数据,结果应该为:rnID Date Date1 Date2 Date3rn5 2009-10-26 2009-11-01 2009-10-26 2009-11-01rn6 2009-10-28 2009-10-28 2009-10-31 2009-10-28rnrn这样的查询应该如何实现?请高手赐教,不胜感激!
根据时间查询数据
数据库表A有时间字段rnrn id start_time namern 1 03 30 2012 4:37AM 1rn 2 03 30 2012 8:37PM 2rn 3 03 31 2012 4:37AM 3rn 4 03 31 2012 6:37PM 4rn 5 04 01 2012 4:37AM 5rn 6 04 01 2012 8:37PM 6rn 7 04 01 2012 9:37PM 7rnrn在3月31号凌晨查询出3月30号的数据rn在4月1号凌晨查询出3月31号的数据rn在4月2号凌晨查询出4月1号的数据rnrn怎么用1条sql语句写出来? 凌晨的时候 我只要执行这语句 就能查询出前一天的数据了
使用greenDao根据条件查询数据的时候碰到的问题
在使用greenDao根据条件查询数据的时候碰到问题,现在记录一下。 调用的方法是Dao对象调用queryRaw(String where, String... selectionArg);返回的是一个List。 /** A raw-style query where you can pass any WHERE clause and arguments. */ public Lis
如何使用ajax实现页面数据保存修改和根据条件查询数据
*今天我们来讲讲ajax实现保存和修改,其实很简单,跟上期的删除方法相似,* *好了,废话不多说,直接上代码* 注意:这里面包含了保存方法,修改,和条件查询及对select下拉列表的操作,请仔细看完 功能页面Jsp &amp;amp;amp;amp;amp;amp;lt;%@ page language='java' pageEncoding='UTF-8'%&amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;lt
tp5连式操作查询数据,根据条件sum if求和
$result = Db::name('server_bill') -&amp;gt;where(['user_id'=&amp;gt;$userId,'status'=&amp;gt;1]) -&amp;gt;field([&quot;sum(if(type in (1,2),money,0)) as income&quot;,&quot;sum(if(type=3,money,0)) as expend&quot;]) -&amp;gt;find...
C#访问SQL 数据库并根据指定条件查询数据
编一个访客登记程序,要实现根据指定条件查询记录功能;又两个TextBox控件,一个指定列名,一个指定值,用这两个条件查询数据库,并将符合条件的行显示在DataGridView控件中,如何实现,谢谢!
如何在多个表中根据条件查询数据
现在有30张表,表的结构相同,关系是并列的,想在这30张表中根据一个条件查询数据,因为是30张表太多了。有没有相对简单的查询语句根据条件进行查询?
MySql 聚合函数 根据条件求和 SUM(if())
SELECT p.Id Id, p.ImgUrl ImgUrl, p.Title Title, p.ReferOutPrice ReferOutPrice, e.`Status`, SUM(IF(e.`Status`=1 OR e.`Status`=2, ed.Number,0)) FROM Product p LEFT JOIN EBOrdersDetails ed ON p....
MySql实现根据某个条件去重求和
具体的可以看下  distinct 具体用法     //第一图 直接查询出所有的id SELECT d.id FROM t_device d LEFT JOIN t_device_collect_state a on d.id = a.device_collect_id LEFT JOIN t_group b on d.group_id = b....
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview