DB2 - разница между двумя временными метками в днях - PullRequest
0 голосов
/ 07 ноября 2019

как получить точную разницу между двумя временными метками в днях в DB2. Я имею в виду, что если одна дата - FROM_DATE = 5/6/2015 2: 22: 27.000000 PM и TO_DATE = 3/30/2015 2: 33: 52.000000 PM, то разница во времени должна составлять 36 дней. Я попытался использовать ниже

((24*DAYS(From_Date)+MIDNIGHT_SECONDS(From_Date)/3600) -

        (24*DAYS(To_Date)+MIDNIGHT_SECONDS(To_Date)/3600))/(24)

Но это дает мне разницу в 37 дней.

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

А как же

SELECT days_between ('2015-05-06-02.22.27.000000', '2015-03-30-02.33.52.000000')
FROM SYSIBM.sysdummy1

Возвращает 36.

0 голосов
/ 08 ноября 2019

Неправильная формула. Проверьте следующее.

SELECT
  FROM_DATE, TO_DATE
,
(
  (24*DAYS(From_Date)+MIDNIGHT_SECONDS(From_Date)/3600) 
- (24*DAYS(To_Date)+MIDNIGHT_SECONDS(To_Date)/3600)
)/24 AS D1
, 
(
  (DAYS(From_Date)*bigint(86400) + MIDNIGHT_SECONDS(From_Date))
- (DAYS(To_Date)  *bigint(86400) + MIDNIGHT_SECONDS(To_Date))
)/86400 AS D2
FROM 
(
VALUES 
  (TIMESTAMP('2015-05-06-14.22.27'), TIMESTAMP('2015-03-30-14.33.52'))
, (TIMESTAMP('2015-03-31-14.22.27'), TIMESTAMP('2015-03-30-14.33.52'))
, (TIMESTAMP('2015-04-01-14.22.27'), TIMESTAMP('2015-03-30-14.33.52'))
) T(FROM_DATE, TO_DATE);

|FROM_DATE                 |TO_DATE                   |D1         |D2                  |
|--------------------------|--------------------------|-----------|--------------------|
|2015-05-06-14.22.27.000000|2015-03-30-14.33.52.000000|37         |36                  |
|2015-03-31-14.22.27.000000|2015-03-30-14.33.52.000000|1          |0                   |
|2015-04-01-14.22.27.000000|2015-03-30-14.33.52.000000|2          |1                   |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...