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 по дате отправления: