Определение, если високосный день падает между двумя днями с DB2 SQL - PullRequest
0 голосов
/ 08 февраля 2011

У меня есть таблица с двумя датами: «Start_Date» и «End_Date».В DB2 SQL есть способ определить, попадает ли високосный день между этими двумя датами?

Спасибо!

1 Ответ

1 голос
/ 09 февраля 2011

Конечно, вы можете сделать это, используя некоторую математическую дату и функцию ДНЕЙ, сравнивая количество дней между начальной и конечной датой с количеством дней между начальной и конечной датами, когда они были сдвинутына 1 год.

Если число дней между двумя датами одинаково в обоих случаях, то високосного дня не произошло.Если количество дней отличается, то существует не менее 1 високосного дня.

Это выражение будет возвращать количество високосных дней:

select
   ( DAYS(end_date + 1 year) - DAYS(start_date + 1 year) ) -
   ( DAYS(end_date)          - DAYS(start_date) )
from
   sysibm.sysdummy1

Это должно работать до тех пор, пока end_date>= start_date.

Тривиально инкапсулировать это в скалярную пользовательскую функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...