Re: Getting number of days in a month

Поиск
Список
Период
Сортировка
От Ken Causey
Тема Re: Getting number of days in a month
Дата
Msg-id 3.0.1.32.20000412112219.017b8f44@premiernet.net
обсуждение исходный текст
Ответ на Getting number of days in a month  (Guillaume Perréal <perreal@lyon.cemagref.fr>)
Список pgsql-general
Here's my perl implementation:

#######################################
#
#  lastday( month, year (4 digit) )
#
#  Returns: last day of the month
#
#######################################

sub lastday {
   my $month=shift;
   my $year= shift;

   $month--;

   my @days = (31,0,31,30,31,30,31,31,30,31,30,31);

   if($days[$month] != 0){
      return $days[$month];
   } else {
   # It's Feb, test for leap year
      if($year % 4 != 0){
         return 28;
      } elsif($year % 400 == 0){
         return 29;
      } elsif($year % 100 == 0){
         return 28;
      } else {
         return 29;
      }
   }
}

Ken Causey
ineffable

At 02:26 PM 4/12/00 +0200, you wrote:
>To obtain the number of days in a month, I wrote this function:
>
>CREATE FUNCTION dayCountOfMonth(datetime) RETURNS float AS
>'    DECLARE
>        theDate        ALIAS FOR $1;
>        monthStart    date;
>        monthEnd    date;
>    BEGIN
>        monthStart := DATE_TRUNC(''month'', theDate);
>        monthEnd := monthStart + ''1 month''::timespan - ''1 day''::timespan;
>        RETURN DATE_PART(''doy'', monthEnd) - DATE_PART(''doy'', monthStart) + 1;
>    END;
>'     LANGUAGE 'PL/pgSQL';
>
>It seems to work, except with the month of October (10).
>
>dayCountOfMonth('1997-10-1') => 30
>dayCountOfMonth('1998-10-1') => 30
>dayCountOfMonth('1999-10-1') => 31
>dayCountOfMonth('2000-10-1') => 30
>dayCountOfMonth('2001-10-1') => 30
>dayCountOfMonth('2002-10-1') => 30
>dayCountOfMonth('2003-10-1') => 30
>dayCountOfMonth('2004-10-1') => 31
>
>Just one question: WHY??????
>(Note: no trouble with February)
>
>Is there a function that give the number of days of a month?
>
>Thanks,
>
>Guillaume Perréal - Stagiaire MIAG
>Cemagref (URH), Lyon, France
>Tél: (+33) 4.72.20.87.64
>
>

В списке pgsql-general по дате отправления:

Предыдущее
От: Andrew Perrin - Demography
Дата:
Сообщение: Re: Perl error: fetchrow_hashref failed
Следующее
От: Haroldo Stenger
Дата:
Сообщение: Re: PostgreSQL-JDBC correct URL