如何在Java

时间:2015-09-04 10:39:27

标签: java sql oracle

我在SQL Select子句中有以下Oracle SQL语句,它将01.04.2015之类的日期转换为7801.07.2015转换为79等等(值) beginDate可以是01.04.201501.07.2015):

SELECT to_char(beginDate, 'q') + 4 * to_char(beginDate, 'yy') + 16
FROM myDateValuesTable;

现在,通过使用相同类型的数学表达式,将当前Date始终转换为Java中的相同值非常重要。我不知道如何在Java中编写这些步骤?这是第一个想法:

Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);   // the value is 2015
int month = calendar.get(Calendar.MONTH); // the value is 09
int quarter = (month / 3) + 1;            // the value is 3

对于01.04.2015,必须将其转换为78,将01.07.2015转换为79。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
System.out.println(month / 3 + 1 + 4 * (year % 100) + 16);

Oracle 'q'返回一年中的季度。这是通过获取月份值并计算month / 3 + 1在Java中获得的。

然后,Oracle 'yy'返回年份的最后两位数字。这是通过获取年份值并计算year % 100在Java中获得的。

您可以使用以下代码对其进行测试:

public static void main(String args[]) throws Exception {
    System.out.println(getNumber("01.04.2015")); // prints 78
    System.out.println(getNumber("01.07.2015")); // prints 79
}

private static int getNumber(String dateStr) throws ParseException {
    Date date = new SimpleDateFormat("dd.MM.yyyy").parse(dateStr);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH);
    return month / 3 + 1 + 4 * (year % 100) + 16;
}