to_date function
Hi
I've a Linux box running postgresql 8.2.17 and facing some strange results
from the to_date function.
As you can see in the following tests the problem occurs when the template
used includes upper and lower case characters for the minute (Mi or mI).
Am I using the incorrect syntax or is it a bug?
Thank you in advance!
template1=# select to_date('01/04/2013 23:59:59','DD/MM/YYYY
HH24:Mi:SS') ;
to_date
------------
2009-04-01
(1 row)
template1=# select to_date('01/04/2013 23:59:59','DD/MM/YYYY HH24:mi:SS')
;
to_date
------------
2013-04-01
(1 row)
template1=# select to_date('01/04/2013 23:59:59','DD/MM/YYYY HH24:mI:SS')
;
to_date
------------
2009-04-01
(1 row)
template1=# select to_date('01/04/2013 23:59:59','DD/MM/YYYY
hH24:MI:SS') ;
to_date
------------
2013-04-01
(1 row)
--
Reimer
Carlos Henrique Reimer <carlos.reimer@opendb.com.br> wrote:
I've a Linux box running postgresql 8.2.17 and facing some strange results
from the to_date function.
As you can see in the following tests the problem occurs when the template
used includes upper and lower case characters for the minute (Mi or mI).
Am I using the incorrect syntax or is it a bug?
[...]
In general, the template patterns are case-sensitive (cf.
"month" vs. "Month" vs. "MONTH"). So "mI" will probably be
interpreted as a literal "m" and "I" meaning "last digit of
ISO year" which isn't what you want.
So use "MI" and be happy.
Tim
Hi,
on a Windows/PostgrSQL 8.4 three from your queries throw errors (sorry,
but they are in german):
select to_date('01/04/2013 23:59:59','DD/MM/YYYY HH24:Mi:SS');
=> FEHLER: ung�ltige Kombination von Datumskonventionen
HINT: Die Gregorianische und die ISO-Konvention f�r Wochendaten k�nnen
nicht einer Formatvorlage gemischt werden.
select to_date('01/04/2013 23:59:59','DD/MM/YYYY HH24:mi:SS');
=> 2013-04-01
select to_date('01/04/2013 23:59:59','DD/MM/YYYY HH24:mI:SS');
=> same error as above
select to_date('01/04/2013 23:59:59','DD/MM/YYYY hH24:MI:SS');
=> FEHLER: ung�ltiger Wert �:5� f�r �MI�
DETAIL: Der Wert muss eine ganze Zahl sein.
Regards
Ludwig
Am 07.07.2010 23:07, schrieb Carlos Henrique Reimer:
Show quoted text
Hi
I've a Linux box running postgresql 8.2.17 and facing some strange
results from the to_date function.
As you can see in the following tests the problem occurs when the
template used includes upper and lower case characters for the minute
(Mi or mI).
Am I using the incorrect syntax or is it a bug?
Thank you in advance!
template1=# select to_date('01/04/2013 23:59:59','DD/MM/YYYY
HH24:Mi:SS') ;
to_date
------------
2009-04-01
(1 row)
template1=# select to_date('01/04/2013 23:59:59','DD/MM/YYYY HH24:mi:SS')
;
to_date
------------
2013-04-01
(1 row)
template1=# select to_date('01/04/2013 23:59:59','DD/MM/YYYY HH24:mI:SS')
;
to_date
------------
2009-04-01
(1 row)
template1=# select to_date('01/04/2013 23:59:59','DD/MM/YYYY
hH24:MI:SS') ;
to_date
------------
2013-04-01
(1 row)--
Reimer
Carlos Henrique Reimer <carlos.reimer@opendb.com.br> writes:
I've a Linux box running postgresql 8.2.17 and facing some strange results
from the to_date function.
As you can see in the following tests the problem occurs when the template
used includes upper and lower case characters for the minute (Mi or mI).
Am I using the incorrect syntax or is it a bug?
The defined template patterns are MI and mi. Random combinations of case
aren't accepted. I believe what's actually happening is that the code
is seeing this as separate letters m (which matches nothing so it's not
a template pattern but just constant text) and i or I, which are the
ISO-week patterns. More recent versions of PG throw an error
ERROR: invalid combination of date conventions
HINT: Do not mix Gregorian and ISO week date conventions in a formatting template.
but 8.2 probably just does something not too sensible with trying to
combine the ISO and Gregorian field values :-(
regards, tom lane