数据库中是 2009-09-27 格式的时间数据 我想查询出提前 5 天的数据,也就是 2009-09-22之前的。其中要考虑到情况包括 特殊情况 月初  和 年初 比如 月初是 2009-06-02 提前 5 天 就要是 2009-05-27或28 (每个月的天数可以不考虑) 年初 是 2009-01-02 提前 5 天就是 2008-12-27(没考虑每个月的天数),
当然考虑每个月的天数的更好 。哪位做过啊  谢谢了。

解决方案 »

  1.   

    数据库里有直接函数,比如SQL SERVER是dateadd,都帮你考虑好了,不用自己考虑
      

  2.   

    是的,如mysql中
    select * from 你的表 where 你的日期<now()-interval 5 day
      

  3.   

    SQL语句可以直接搞定,你如果是要在页面上的话,就要先自己判断下闰年
    能被4整除且不能被100整除或能被100整除且能被400整除
    ,然后在判断他的天数就很好计算了
      

  4.   

    用Date类的getDay()方法可以得到日,是int类型的,可以自己处理
      

  5.   

    int day = 5;
    int m_day = 3600*24*1000;
    Date dt = new Date((new Date().getTime()+m_day*day));
    System.out.println(dt.toLocaleString());
      

  6.   


    public static void main(String[] args) throws ParseException{
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");   
    Calendar c=Calendar.getInstance();
    c.setTime(sdf.parse("2009-09-27"));   
    c.add(Calendar.DAY_OF_MONTH, -5);    
    String result = sdf.format(c.getTime());    
        System.out.println("相加/减后的日期:"+result);   
    }
      

  7.   

    简单的就这样
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, 5);
      

  8.   


    Calendar的 add有多个类型的参数
      

  9.   

    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, -5);
    Date newDate = cal.getTime();这个方法的参数,你可以查查API
    cal.add(Calendar.DATE, -5);
      

  10.   

    Calendar类 去API查找一下.有对应的函数...还有ORACLE也有相应的日期函数啊...直接写到SQL里也行啊...再说了你得到系统和日期和服务器上的是不是一致呢.
      

  11.   

    TSQL(sqlserver)select * from [表名] where [表中时间字段] < convert(varchar(10),dateadd(day,-5,getdate()),120)
      

  12.   

    给你一个方法。
    static Date formatDate(Date date) {
    if (date == null)
    return null;
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(date);
    // 获得年月日
    int year = calendar.get(Calendar.YEAR);
    // 注意月份要加1.
    int month = calendar.get(Calendar.MONTH) + 1;
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    System.out.println("input date: " + year + "-" + month + "-" + day);
    // 如果天数大于5.直接返回
    if (day > 5) {
    return new GregorianCalendar(year, month - 1, (day - 5)).getTime();
    }
    // 如果天数小于5月份大于1.返回上一个月的日期
    if (day <= 5 && month > 1) {
    return new GregorianCalendar(year, month - 2, (day + 25)).getTime();
    }
    // 如果天数小于5,月分为1,返回上一年最后一个朋数据
    if (day <= 5 && month == 1) {
    //System.out.println("-------------"+(year-1)+"-"+month+"-"+(day+25));
    return new GregorianCalendar((year - 1), 11, (day + 25)).getTime();
    } return null;
    }
      

  13.   

    public static void main(String[] args) throws ParseException{
            SimpleDateFormat    sdf = new SimpleDateFormat("yyyy-MM-dd");   
            Calendar c=Calendar.getInstance();
            c.setTime(sdf.parse("2009-09-27"));   
            c.add(Calendar.DAY_OF_MONTH, -5);    
            String result = sdf.format(c.getTime());    
            System.out.println("相加/减后的日期:"+result);   
        }