sql >> データベース >  >> RDS >> Oracle

OracleとJavaの日付の日付の違い

    日付は同じでも、時間は異なる場合があります。ミリ秒単位で計算すると、139日になります。 (java)

    ミリ秒を使用せず、日数を使用して計算することをお勧めします。

    のようなもの

    public long daysBetween(Calendar startDate, Calendar endDate) {
       Calendar date = (Calendar) startDate.clone();
       long daysBetween = 0;
       while (date.before(endDate)) {
          date.add(Calendar.DAY_OF_MONTH, 1);
          daysBetween++;
       }}
    

    または

    /**
         *
         * @param c1 from
         * @param c2 to
         * @return amount of days between from and to
         */
        public int diff(Calendar c1, Calendar c2) {
            int years = c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR);
            if (years == 0) {
                return c2.get(Calendar.DAY_OF_YEAR) - c1.get(Calendar.DAY_OF_YEAR);
            } else {
                Calendar endOfYear =  Calendar.getInstance();
                endOfYear.set(Calendar.YEAR, c1.get(Calendar.YEAR));
                endOfYear.set(Calendar.MONTH, 11);
                endOfYear.set(Calendar.DAY_OF_MONTH, 31);
                int days = endOfYear.get(Calendar.DAY_OF_YEAR) - c1.get(Calendar.DAY_OF_YEAR);
                for (int i=1;i <years;i++) {
                    endOfYear.add(Calendar.YEAR, 1);
                    days += endOfYear.get(Calendar.DAY_OF_YEAR);
                }
                days += c2.get(Calendar.DAY_OF_YEAR);
                return days;
            }
        }
    

    補足:最初の例は2番目の例よりも少し遅いですが、わずかな違いがある場合は無視できます。



    1. PostgreSQLのビットデータ型とブールデータ型の違い

    2. Pl/SQLネストされたプロシージャの例外処理

    3. MySQLとMariaDBのスキーマ管理のヒント

    4. 関数の作成時に構文エラーが発生する