Конференция "Базы" » как в Firebird узнать количество дней в месяце? [Firebird 2.0]
 
  • zorik © (24.01.09 12:02) [0]
    Приходят идеи перебора (28,29,30,31) или как-то от следующего месяца отнять один день...
  • zorik © (24.01.09 14:20) [1]
    решил с помощью ХП

             m = (extract (month from zdate));
             y = (extract (year from zdate));
             m = m + 1;
             if (m > 12) then
             begin
               m = 1;
               y = y1 + 1;
             end
             date2 = cast('1.'||m||'.'||y as date) - 1;

  • Виталий Панасенко (24.01.09 14:21) [2]
    Вообще-то, формат даты  -ГГГГ-ММ-ДД
  • zorik © (24.01.09 14:28) [3]
  • Виталий Панасенко (24.01.09 14:40) [4]

    > zorik ©   (24.01.09 14:28) [3]

    И?
  • zorik © (24.01.09 14:54) [5]
    Работает двумя способами
  • Johnmen © (24.01.09 19:41) [6]
    из фака:
    <количество дней в месяце даты YourDate> =
    ==========================================
    EXTRACT(DAY FROM
    CAST('01.'||EXTRACT(MONTH FROM TmpDate)||'.'||
    EXTRACT(YEAR FROM TmpDate) AS DATE) - 1);
    где
    TmpDate =
    CAST('01.'||EXTRACT(MONTH FROM YourDate)||'.'||EXTRACT(YEAR FROM YourDate) AS DATE) + 32;


    соответственно подумав, можно получить с -1 к количеству дней в месяце.
  • makz (25.01.09 15:17) [7]
    в fb2.1 есть dateadd, c ним проще.
  • Труп Васи Доброго © (26.01.09 16:54) [8]
    если FB 2.1, то проще так
    select DATEDIFF(day,cast('01.02.2008' as date), cast('01.03.2008' as date)) from rdb$database;
    автоматически учитывает високосность года
 
Конференция "Базы" » как в Firebird узнать количество дней в месяце? [Firebird 2.0]
Есть новые Нет новых   [134477   +40][b:0][p:0.001]