Re: to_char issue?
От | Bruce Momjian |
---|---|
Тема | Re: to_char issue? |
Дата | |
Msg-id | 201002230144.o1N1i5A07629@momjian.us обсуждение исходный текст |
Ответ на | to_char issue? (Dave Page <dpage@pgadmin.org>) |
Ответы |
Re: to_char issue?
|
Список | pgsql-bugs |
Dave Page wrote: > This was posted as a documentation comment: > > to_char(interval '0d 0h 12m 44s', 'DD HH MI SS'); > with HH and HH12 will return 12 instead of 0. > > Testing on 8.4.1, it does seem to be the case that you get "00 12 12 > 44". Seems bogus to me, but am I and the OP missing something? Fixed with the attached patch. I think HH and HH24 should be the same for intervals. It is hard to explain why zero hours should show as '12' for intervals. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com PG East: http://www.enterprisedb.com/community/nav-pg-east-2010.do + If your life is a hard drive, Christ can be your backup. + Index: src/backend/utils/adt/formatting.c =================================================================== RCS file: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v retrieving revision 1.163 diff -c -c -r1.163 formatting.c *** src/backend/utils/adt/formatting.c 16 Feb 2010 21:18:01 -0000 1.163 --- src/backend/utils/adt/formatting.c 23 Feb 2010 01:39:21 -0000 *************** *** 2089,2096 **** case DCH_HH: case DCH_HH12: sprintf(s, "%0*d", S_FM(n->suffix) ? 0 : 2, ! tm->tm_hour % (HOURS_PER_DAY / 2) == 0 ? 12 : ! tm->tm_hour % (HOURS_PER_DAY / 2)); if (S_THth(n->suffix)) str_numth(s, s, S_TH_TYPE(n->suffix)); s += strlen(s); --- 2089,2096 ---- case DCH_HH: case DCH_HH12: sprintf(s, "%0*d", S_FM(n->suffix) ? 0 : 2, ! !is_interval && tm->tm_hour % (HOURS_PER_DAY / 2) == 0 ? ! 12 : tm->tm_hour % (HOURS_PER_DAY / 2)); if (S_THth(n->suffix)) str_numth(s, s, S_TH_TYPE(n->suffix)); s += strlen(s);
В списке pgsql-bugs по дате отправления: