Количество дней в месяце в DB2 - PullRequest
0 голосов
/ 17 июня 2020

Есть ли способ узнать количество дней в месяце в DB2. Например, у меня есть поле даты и времени, которое я отображаю как январь-2020, февраль-2020 и так далее. На основе этого поля мне нужно получить количество дней в этом месяце. Результат должен быть примерно таким, как в таблице ниже:

Я использую запрос ниже

select reportdate, TO_CHAR(reportdate, 'Mon-YYYY') as textmonth from mytable

Ожидаемый результат

ReportDate       textMonth   No of Days
1-1-2020 08:00   Jan-2020      31
1-2-2020 09:00    Feb-2020     29
12-03-2020 07:00  Mar-2020     31

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Попробуйте следующее:

/*
WITH MYTABLE (reportdate) AS 
(
VALUES
  TIMESTAMP('2020-01-01 08:00:00')
, TIMESTAMP('2020-02-01 09:00:00')
, TIMESTAMP('2020-03-12 07:00:00')
)
*/
SELECT reportdate, textMonth, DAYS(D + 1 MONTH) - DAYS(D) AS NO_OF_DAYS
FROM
(
SELECT 
  reportdate, TO_CHAR(reportdate, 'Mon-YYYY') textMonth
, DATE(TO_DATE('01-' || TO_CHAR(reportdate, 'Mon-YYYY'), 'dd-Mon-yyyy')) D
FROM MYTABLE
);
0 голосов
/ 17 июня 2020

Db2 имеет функцию DAYS_TO_END_OF_MONTH и несколько других, которые вы можете использовать. На основе введенного вами месяца постройте первый день месяца. Это должно быть что-то вроде 2020-01-01 для января 2020 г. или 2020-02-01 для февраля-2020. По ссылке вы найдете несколько других функций преобразования, которые позволяют вам преобразовывать форматы и выполнять арифметику даты.

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