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);
}