当前位置: 首页 > 面试题库 >

Java中的ORACLE函数MONTHS_BETWEEN的模拟

凌照
2023-03-14
问题内容

Java是否具有Oracle功能的类似物MONTHS_BETWEEN


问题答案:

您可以使用:

public static int monthsBetween(Date minuend, Date subtrahend){

    Calendar cal = Calendar.getInstance();   
    cal.setTime(minuend);  
    int minuendMonth =  cal.get(Calendar.MONTH);  
    int minuendYear = cal.get(Calendar.YEAR);  
    cal.setTime(subtrahend);  
    int subtrahendMonth =  cal.get(Calendar.MONTH);  
    int subtrahendYear = cal.get(Calendar.YEAR);

    return ((minuendYear - subtrahendYear) * (cal.getMaximum(Calendar.MONTH)+1)) +    
    (minuendMonth - subtrahendMonth);  
}

编辑:

根据此文档
MONTHS_BETWEEN返回小数结果,我认为此方法可以执行相同的操作:

public static void main(String[] args) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    Date d = sdf.parse("02/02/1995");
    Date d2 = sdf.parse("01/01/1995");
    System.out.println(monthsBetween(d, d2));

}

public static double monthsBetween(Date baseDate, Date dateToSubstract){

    Calendar cal = Calendar.getInstance();   
    cal.setTime(baseDate);
    int baseDayOfYear = cal.get(Calendar.DAY_OF_YEAR);  
    int baseMonth =  cal.get(Calendar.MONTH);  
    int baseYear = cal.get(Calendar.YEAR);

    cal.setTime(dateToSubstract);  
    int subDayOfYear = cal.get(Calendar.DAY_OF_YEAR);
    int subMonth =  cal.get(Calendar.MONTH);  
    int subYear = cal.get(Calendar.YEAR);

    //int fullMonth = ((baseYear - subYear) * (cal.getMaximum(Calendar.MONTH)+1)) +    
    //(baseMonth - subMonth);  
    //System.out.println(fullMonth);

    return ((baseYear - subYear) * (cal.getMaximum(Calendar.MONTH)+1)) +   
           (baseDayOfYear-subDayOfYear)/31.0;
}


 类似资料:
  • 问题内容: 询问: 上面查询的输出是: 有人可以向我解释一下此查询如何给出此输出以及有关interval函数的解释吗? 问题答案: 不是函数,而是引入间隔 文字 的关键字,它表示 数据类型 。类似于文字或正在做的事情。 有关间隔 文字的 详细信息 http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQ

  • 问题内容: 我遇到了使用ojdbc14.jar从Java 1.6调用Oracle FUNCTION(不是存储过程)的问题。 我从远程服务器调用该函数时不知道该函数包含的内容,我所知道的是: 我需要使用的架构是:FCRLIVE.AP_CH_GET_ACCT_BALANCES 我正在尝试: 但是我一直在日志文件中看到这一点: 我称这个功能错了吗?或者这可能是什么? 在此先感谢您的帮助! 问题答案: 它

  • 问题内容: 我想比较两列中的两个日期并得到最大值,然后再与日期值进行比较。这两列也可以容纳NULL值,例如我想要下面的OUTPUT。如何使用最大的函数或是否有任何东西else。我再次使用输出与另一个日期进行比较。 问题答案: 在您的选择中使用Oracle结构:

  • 本文向大家介绍Oracle 中 table 函数的应用浅析,包括了Oracle 中 table 函数的应用浅析的使用技巧和注意事项,需要的朋友参考一下 表函数可接受查询语句或游标作为输入参数,并可输出多行数据。该函数可以平行执行,并可持续输出数据流,被称作管道式输出。应用表函数可将数据转换分阶段处理,并省去中间结果的存储和缓冲表。 1. 用游标传递数据 利用游标 REF CURSOR 可将数据集(

  • 我使用下面的Java代码使用Math.random函数生成随机数

  • 我有一个函数,它有时必须返回< code>Date,有时必须返回< code>DateTime (Joda-Time)。 这是正确的方法吗?< br >如何使用? 像这样(timerHelper是类的名字): 或 如何使用这个函数呢?