做个日期查询,判断开始日期与终止日期范围必须在一个月之内,用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代码的主要内容,如果未能解决你的问题,请参考以下文章

在oracle中怎么判断一个日期是不是在一定时间范围内

SQL语句如何判断一个日期在两个日期之间

年份列与日期范围列的查询性能如何

数据库的日期区间查询方法。

SQL 查询日期范围保存在 2 列中

为啥我无法获取某个日期范围内的记录?