mysql 根据条件查询数据

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

0

7个回答

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

1
根据你的需求,创建数据如下:![图片说明](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';
1
zhumengstyle
zhumengstyle 笔误,如果后者比前者小,则涉及跨年问题
大约 2 年之前 回复

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

0

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

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

0

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

0

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

0

涉及到时间查询,最准确最稳妥的做法是使用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,'',''),精确到分;

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

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MySQL根据时间条件查询数据
有时我们面要统计一下数据库中指定日期的数据,如常用的,今天,昨天,明天,本周、上周、本月、上个月份的数据,还有对日期的加减, 除了我们可以使用strtotime来算还可以参考下面方法。   SQL减去指定天数 SELECT * from 表名 where DATE_FORMAT(时间字段,&quot;%Y-%m-%d&quot;) = DATE_ADD(输入时间,INTERVAL -1 DAY); /** ...
MYSQL按条件查找数据
1.登陆mysql数据库,输入用户名及密码2.选择数据库,显示表名3.查找数据库中,获取南京信息职业技术学院的地区名称及学校编号;end
Mysql按条件查询
这是第二篇关于MySql语句的文章,打算写一系列关于Mysql查询的文章,之所以要写出来,是后期在做项目中遇到过一些比较复杂的查询语句,如果用完就放着不管了,时间 久了就忘记了,所以打算把这些语句写成一系列的文章。 和上一篇文章一样,开发环境不变,使用框架也不变。 java代码部分: @Responsebody         @RequestMapping("/XXX.do")   
mysql 查询数据,特定条件排序靠前。
SELECT * FROM `w_user_contacts` WHERE `uid` = 76042197140504576 ORDER BY CASE             WHEN phone = 18141901322 THEN 1             WHEN phone = 17695561638 THEN 1 ELSE         phone END LIMIT 0,10...
mysql查询语句where条件执行过程分析
前提: mysql逻辑架构 存在索引index(name,age) 一个select语句一次只会查询一次索引(index merge除外) 记录有: 1:name=‘zhangsan’ age=10 2:name=‘zhangsan’ age=20 3:name=‘lisi’ age=20 问: select * from user where name=‘zhangsan’ and age=2...
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根据查询条件更新数据表
-- menu_templateitem表数据更新-- 插入邮箱服务器的修改列929INSERT IGNORE INTO menu_templateitem(menu_template,menu_id)SELECT menu_template,929 FROM menu_templateitem WHERE menu_id = 147;-- 插入邮箱服务器的删除列930INSERT IGNORE ...
MySQL查询语句之条件查询和排序查询(二)
条件查询 语法 select 查询列表 from 表名 where 筛选条件; 条件查询的查询顺序为: 第一步:表名,表示查询来自哪张表 第二步:筛选条件,在选定表中按条件来筛选 第三步:查询,查询筛选后的字段 分类 一、按条件表达式筛选 条件运算符: &gt;,&lt;,=,!=,&lt;&gt;,&gt;=,&lt;= 二、按逻辑表达式筛选 逻辑运算符: &amp;&amp;=and,||=...
mysql根据查询插入数据
insert into sip_users(privilege,type) select privilege,type from sip_users where number="engine";
mysql根据查询条件更新
// 根据author_account的uid更新手机号码到user_base表 update user_base u,(select uid,number from author_account) a set u.number= a.number where a.uid= u.uid;
MySQL条件查询语句(一)
条件查询 注意:条件查诟需要用到 where 询句,where 必须放到 from 询句表的后面; 执行顺序:先from再where过滤后再检索出来。 1、、支持如下运算 2、等号(=)操作符 (1)、查询薪水为5000的员工 例如:select empno,ename,sal from emp where sal = 5000; (2)、查询 job 为 MANAGER 的...
mysql 数据条件过滤查询练习
原文地址sql语句练习的答案统一放在在文章底部首先展示表的数据 employees 雇员表 在 employees表中 显示雇员 names (first_name, last_name) and salary。 且 salary 不在10000至15000之间的信息。 查询结果如下: 在 employees表中显示雇员 names (first_name, last_name) 和 depar
mysql快速复制数据,多条件查询技巧
mysql快速复制数据INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表; 请注意以上两表的字段必须一致(字段类型),否则会出现数据转换错误 如果是目标表和来源表是同一张表,快速复制数据,可用于测试性能 数据库多条件查询技巧 public ResultSet gradeList(Connection con,PageBean
mysql随机查询出一条 符合条件的数据
select c.userCrowd_user_id from tab_usercrowd c where c.userCrowd_Id=’6755f9a4-e27f-48fc-88e2-59c1de9c9247’ order by rand() limit 1
mysql中随机获取排序条件中的指定数量数据
使用了mysql的随机函数RAND(),比如随机取12条: SELECT * FROM video_info ORDER BY RAND() LIMIT 12 但是效率较差,执行时间大概用了8秒上下,优化一下并加上条件后: SELECT * FROM video_info WHERE v_id >= (SELECT floor(RAND() * (SELECT MAX(v_i
MySQL 一个条件查询出数据表中所有满足条件的数据的方法
项目开发中遇到一个问题:搜索框只传入一个条件,在SQL查询的时候如何查询出所有满足条件的数据。想到的第一解决方案是在后端进行逻辑处理的时候进行 if...else...的拼接。 但是拼接多个if...else...也不过是权宜之计,假如新增字段也不便于代码维护。查询mysql手册发现了一个非常有意思的函数 :CONCAT mysql对这个 函数的描述是,字符串比较函数 ,官方例子/描述如下:
mysql查询根据列按条件统计总数
mysql可以查询根据某列按条件统计总数
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
mysql 在一定范围内获取随机数据
若要:在 i&amp;lt;=R&amp;lt;=j,这个范围得到一个随机整数R,需要用到 floor(i+rand()*(j-i+1)) 例如:得到7-12这个范围(包括7和12)内一个随机整数。 select floor(7 + (rand()*6) ) 例如:在用户表中随机取一个用户id [1,10] select id from user where id = floor(1+ (rand()*10...
java连接mysql查询数据
  jar:mysql-connector-java-5.1.12-bin.jar         package inspur.data;   import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.DriverMan...
mysql数据库当中根据时间段来查询数据
今天在项目中遇到需要根据时间查询数据的问题,在百度上面扒了一会儿,终于找到了根据时间查询的方法,做笔记如下: "FROM Nfc_User where DATE_FORMAT(createTime,'%y-%m-%d')>'2016-02-26'; 这是hql语句,换算成sql语句的话就是: select * from nfc_user where DATE_FORMAT(createT
sql时间格式化,根据时间作为条件查询
在创建表和查询表中的数据时, 经常会跟时间打交道, 比如查询某一段时间内的订单信息. 如果要查询订单时间在5月1号到5月12号之间的数据 Select * From order Where DATE_FORMAT(createTime,'%m-%d') &amp;gt;= '05-01' and DATE_FORMAT(createTime,'%m-%d') &amp;lt;= '05-12'; 1 ...
MySQL根据日期查询数据
查询往前7天的数据: select * from 数据表 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) &amp;lt;= 时间字段 查询往前30天的数据: select * from 数据表 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) &amp;lt;= 时间字段 查询往前3个月的数据: selec...
ORACLE———根据时间 为条件查询相关数据
摘要:Oracle中如何通过时间字段为条件来查询相关数据。普及:用到了to_char()这个oracle自带的函数一、小于某一时间(精确到了时分秒):SELECT * FROM OP_BS_CC WHERE TRANS_TIME &amp;lt; TO_DATE ( '2018-04-23 10:39:00', 'yyyy-mm-dd hh24:mi:ss' );1.1.那么大于某一事件只...
根据条件查找不同的表
SELECT              u.user_name As &quot;fyUser.userName&quot;,             a.id AS &quot;id&quot;,             a.del_flag AS &quot;delFlag&quot;,             a.istatus AS &quot;istatus&quot;,             a.user_id AS &quot;fyuser.id&quot;,          ...
C++中MFC DLL 按条件查询mysql数据并修改
仅供学习和交流。
Mysql的批量操作(批量查询)
前面几篇Mysql的文章一直在写普通查询,从这篇开始,会写一些Mysql的批量操作。 本篇主要是mysql的批量查询,主要是通过id来查询,如果需要查询多个id对应的多个数据,使用for循环去查,对程序来说不太高效。在这里就可以通过批量循环进行查询。 直接上代码: java代码部分:          @Responsebody          @RequestMapping("/XX
Mysql 左连接查询条件位置不同造成数据查不出来
可行的: select * from tb_zdxm p  left join tb_zdxm_plan pl on p.id=pl.pro_id and pl.plan_year='2017' where p.pro_status='审核通过' and p.pro_createuser='zjk'  不行的: select * from tb_zdxm p  left join t
java实现至少输入一个条件的数据库查询
昨天在编写java连接数据库实现书目管理的作业时,学习到了一个很巧妙的方法 可以很简单的实现 **至少输入一个条件的** 查询 代码如下if (!BookNameText.getText().equals("") || !BookPressText.getText().equals("") || !BookAuthorText.getText().equals
PHP-CI 查询所有数据-按条件查询数据
1.view  h2><?php echo $title; ?>h2> // 用 $news_item 遍历 根据 $newsXjp_where这个key值取出来的 数据库 ($newsXjp_where as $news_item): ?> h4> 这是 信息读取页面 h4> h3>$news_item['title']; ?>h3> div
Mysql在mapper中的条件查询
1. 多条件查询 type 属性用于指定获取sql语句的指定类 method 属性用于指定类中要执行获取sql语句的方法 https://blog.csdn.net/qq_36872046/article/details/80291939 package com.msp.whg.mapper; import com.msp.whg.domain.Attendances; import ...
mysql按照Order by 同时按照两个条件排序
SQL语句order by两个字段同时排序。 (2012-08-17 15:10:12ORDER BY  后可加2个字段,用英文逗号隔开。f1用升序, f2降序,sql该这样写ORDER BY  f1, f2  DESC也可以这样写,更清楚:ORDER BY  f1 ASC, f2  DESC如果都用降序,必须用两个descORDER BY  f1 DESC, f2 DESC...
查询不符合条件的数据 mysql
SELECT * FROM yh WHERE xl&amp;lt;&amp;gt;'255' AND xl&amp;lt;&amp;gt;'0' AND lpower&amp;lt;&amp;gt;'255' 一般查询都是where 某字段='条件';但是这次是查询不符合条件的数据; &amp;lt;&amp;gt;表示不等于 例子如下: 1.根据编号查询最近的一条数据而且心率、血压不为255,不为0 SELECT * FROM yh WHERE ...
mysql中导出指定条件的数据
mysql中导出指定条件的数据 mysqldump -u用户名 -p密码 -h mysql主机  --default-character-set=指定编码  数据库名称  表名称  --where=" 查询条件 " > 导出文件名.sql mysqldump -uroot -p123456 -h 192.168.1.123  --default-character-set
MySql5.6从零开始学之查询数据
一、基本查询语句         select语句基本格式: SELECT {*|&amp;lt;字段列表&amp;gt;} [ FROM &amp;lt;表1&amp;gt;,&amp;lt;表2&amp;gt;... [WHERE &amp;lt;表达式&amp;gt; [GROUP BY &amp;lt;group by definition&amp;gt;] [HAVING &amp;lt;expression&amp;gt; [{&amp;...
Redis实现类似SQL的where多条件查询
1、关于保存User表的方案       1.1  使用Redis的Hash类型去保存关系型数据库的User表        1.2 Redis的Hash的key为"SYS_USER_TABLE_SEX_MAN",field:userid   value:json 数据 2、利用Redis的Set来保存满足一类条件的User用户的id信息。例如,性别为女,年龄大于25岁等条件。
MYSQL根据热门条件进行排序分页,防止分页有重复数据
最近有一个需求:APP端需要有一个热门的版块,热门的规则根据的是点赞数排序,分页不能有重复数据。 方案: 1、给表加多一个更新时间的字段,然后先按赞赏数逆序排序,再按更新时间顺序排序。 2、贴SQL; SELECT * FROM shares WHERE 1 = 1 AND FK_MOBILE IS NOT NULL AND MIX_STATUE = 1 AND
【mysql】根据不同条件查询表中同一字段
需求:需要在一张表中,查询某个店铺05-17和05-10两天的同一个GMV字段数据遇到问题:在测试过程中发现,如果两天中任意一天没有数据,则该店铺整体数据均不显示解决代码:SELECT a.Seller_nick, IFNULL(a.GMV, 0), IFNULL(b.GMV, 0) AS last_gmv FROM ( SELECT
根据查询条件导出数据
/** * 根据查询条件查询导出数据 */ public void exportTable(){ Page pageInfo = this.getPageInfo(); String taskBookId = request.getParameter(&quot;taskBookId&quot;); String type = request.getParameter(&quot;type&quot;); ...
mysql 查询去除表中(多个条件确定的一个数据)
mysql  查询去除表中(多个条件确定的一个数据) 1.原始数据表内容 2.sql语句 SELECT order_id, order_name, state, CASE WHEN A.order_id = 1 AND A.order_name = '订单1' AND A.state = 1 THEN 'yes' EL
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python查询数据使用教程 学习大数据开发条件