做个日期查询,判断开始日期与终止日期范围必须在一个月之内,用java代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了做个日期查询,判断开始日期与终止日期范围必须在一个月之内,用java代码相关的知识,希望对你有一定的参考价值。
import java.text.DateFormat;import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;
public class DateTest
/**
* 判断是否在同一个月
* @param startDate yyyy-MM-dd
* @param endDate yyyy-MM-dd
* @return false:不在同一个月内,true在同一个月内
*/
public static boolean isMonth(String startDate,String endDate)
if(margin(startDate, endDate)>31)
return false;
int startMonth = Integer.parseInt(startDate.substring(5, 7));
int endMonth = Integer.parseInt(endDate.substring(5, 7));
if(startMonth==endMonth)
return true;
else
return false;
/**
* 计算开始日期和结束日期差
* @param startDate yyyy-MM-dd
* @param endDate yyyy-MM-dd
* @return
*/
private static int margin(String startDate,String endDate)
ParsePosition pos = new ParsePosition(0);
ParsePosition pos2 = new ParsePosition(0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date ds = sdf.parse(startDate, pos);
Date de = sdf.parse(endDate, pos2);
long l = de.getTime()-ds.getTime();
int margin = (int)(l/24*60*60*1000);
return margin;
/**
* main方法测试
* @param args
*/
public static void main(String[] args)
System.out.println(DateTest.isMonth("2014-10-17", "2014-10-25"));
System.out.println(DateTest.isMonth("2014-10-17", "2014-12-25"));
参考技术A java.util.Date nowdate = new java.util.Date();
java.util.Date beforeDate = new java.util.Date();
java.util.Date lastDate = new java.util.Date();
java.util.Date bizDate = (Date)pkBizDate.getValue();
java.util.Calendar calendar = java.util.Calendar.getInstance();
calendar.setTime(nowdate);
calendar.add(calendar.MONTH, -1);
beforeDate = calendar.getTime();
calendar.add(calendar.MONTH, 2);
lastDate = calendar.getTime();
if (bizDate.before(beforeDate) || bizDate.after(lastDate))
MsgBox.showInfo("业务日期已经超过1个月,请注意!");
参考技术B public int getDateInterval(String startDate, String endDate)
throws RuntimeException
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
Date date1, date2;
try
date1 = formatter.parse(startDate);
date2 = formatter.parse(endDate);
cal1.setTime(date1);
cal2.setTime(date2);
return cal2.get(Calendar.DAY_OF_YEAR)
- cal1.get(Calendar.DAY_OF_YEAR);
catch (ParseException e)
throw new RuntimeException(e);
就这个,返回的结果是开始日期与结束日期的差值
SQL语句如何判断一个日期在两个日期之间
1、创建测试表,
create table test_date_bet(id varchar2(20),v_date date);
2、插入测试数据;
insert into test_date_bet values(1, sysdate-100);
insert into test_date_bet values(2, sysdate-10);
insert into test_date_bet values(3, sysdate-5);
insert into test_date_bet values(4, sysdate);
insert into test_date_bet values(5, sysdate-4);
commit;
3、查询表中全量数据;select t.*, rowid from test_date_bet t;
4、编写语句,查询sydate-5与sydate之间的记录;
select t.*, rowid sec from test_date_bet t where v_date between sysdate-5 and sysdate;
参考技术A 这个并不难的,最简单的使用case when 判定就能实现。如果是单表,直接可以这样写:
select case when 时间字段 between '需要判定的最小时间' and '需要判定的最大时间' then 'true' else 'false' end from 表1
我想楼主应该是想多表放在一起怎么判定时间吧,那么假设你有两张表,表使用ID做关联的,那可以这样写:
select case when 时间字段 between b.时间1 and b.时间2 then 'true' else 'false' end from 表1 a
join 表2 b on a.ID= b.ID
以上是关于做个日期查询,判断开始日期与终止日期范围必须在一个月之内,用java代码的主要内容,如果未能解决你的问题,请参考以下文章