Java - считать разницу в минутах

  • Я должен посчитать разницу в минутах между этими двумя датами, но даты совпадают.
  • У меня есть два диапазона дат: EventStart, EventEnd
  • Я написал SQL-запрос раньше (см. Ниже), и он работает отлично, но очень медленно, поэтому я хочу обработать его на Java (resultSet)

Вот JSON, который я получаю от SQL Server: https://pastebin.com/raw/xhCnXynA

Вот мой SQL-скрипт, который работает:

DECLARE @T TABLE(ID INT,FromDate DATETIME, ToDate DATETIME)

INSERT INTO @T(ID,FromDate,ToDate)
SELECT 1,'20090801','20090803' UNION ALL
SELECT 2,'20090802','20090809' UNION ALL
SELECT 3,'20090805','20090806' UNION ALL
SELECT 4,'20090812','20090813' UNION ALL
SELECT 5,'20090811','20090812' UNION ALL
SELECT 6,'20090802','20090802'

SELECT ROW_NUMBER() OVER(ORDER BY s1.FromDate) AS ID,
       s1.FromDate,
       MIN(t1.ToDate) AS ToDate
FROM @T s1
INNER JOIN @T t1 ON s1.FromDate <= t1.ToDate
  AND NOT EXISTS(SELECT * FROM @T t2
                 WHERE t1.ToDate >= t2.FromDate
                   AND t1.ToDate < t2.ToDate)
WHERE NOT EXISTS(SELECT * FROM @T s2
                 WHERE s1.FromDate > s2.FromDate
                   AND s1.FromDate <= s2.ToDate)
GROUP BY s1.FromDate
ORDER BY s1.FromDate

Результат: https://i.stack.imgur.com/5TP3U.png

Мой код Java:

ResultSet rs = pstmt.executeQuery();  

     while (rs.next()) {  

          LocalDateTime eventStart = LocalDateTime.parse(rs.getString("EventStart"), formatter);
          LocalDateTime eventEnd = LocalDateTime.parse(rs.getString("EventEnd"), formatter);

               if (eventStart.isBefore(eventEnd)) {
                  duration = Duration.between(eventStart, eventEnd);
                  } 
                  else {
                    duration = Duration.between(eventEnd, eventStart);
                  }

            long minutes = duration.toMinutes();

            System.out.println(minutes);

     }  

Ответы (0 шт):