postgresql/contrib/dateformat/to-from_char.doc

184 lines
4.9 KiB
Plaintext

TO_CHAR(datetime, text)
-----------------------
(returns text)
TO_CHAR - the DateTime function for formating date and time outputs.
This routine is inspire with the Oracle to_char().
SELECT TO_CHAR('now'::datetime, 'HH:MI:SS YYYY');
-------------
11:57:11 1999
FROM_CHAR(text, text)
---------------------
(returns DateTime)
FROM_CHAR - the PostgreSQL extension routine which read non-datetime
string and convert it to DateTime. This func. is inspire with the
Oracle to_date() routine, but in Oracle this func. return date only
and not support all keywords (format pictures).
SELECT FROM_CHAR('11:57:11 1999', 'HH:MI:SS YYYY');
----------------------------
Fri 01 Jan 11:57:11 1999 CET
TO_DATE(text, text)
-------------------
(returns Date)
TO_DATE - the Date function which read non-datetime (non-date) string
and convert it to date. All for thos func. is just as from_char().
This func. is inspire with the Oracle to_date() routine.
SELECT TO_DATE('11:57:11 1999', 'HH:MI:SS YYYY');
----------
01-01-1999
----------------------------------
String format-KeyWords and options:
----------------------------------
* TO_CHAR (..., 'format picture')
* FROM_CHAR (..., 'format picture')
* TO_DATE (..., 'format picture')
(Note: In Oracle manual is format-keyword called 'format pictures'.)
All keywords has suffixes (prefix or postfix), example for 2 hours:
keyword: HH (hour) 'HH' --> '02'
prefix: FM (fill mode) 'FMHH' --> '2'
postfix: TH (ordinal number) 'HHth' --> '02nd'
'FMHHth' --> '2nd'
Suffixes:
--------
FM - fill mode
02 --> FMHH --> 2
January , --> FMMonth --> January,
TH - upper ordinal number
02 --> HHTH --> 02ND
th - lower ordinal number
02 --> HHth --> 02th
KeyWords (format pictures):
--------------------------
HH - hour of day (01-12)
HH12 - -- // --
HH24 - hour (00-24)
MI - minute (00-59)
SS - socond (00-59)
SSSS - seconds past midnight (0-86399)
Y,YYY - year with comma (full PgSQL datetime range) digits)
YYYY - year (4 and more (full PgSQL datetime range) digits)
YYY - last 3 digits of year
YY - last 2 digits of year
Y - last digit of year
MONTH - full month name (upper) (9-letters)
Month - full month name - first character is upper (9-letters)
month - full month name - all characters is upper (9-letters)
MON - abbreviated month name (3-letters)
Mon - abbreviated month name (3-letters) - first character is upper
mon - abbreviated month name (3-letters) - all characters is upper
MM - month (01-12)
DAY - full day name (upper) (9-letters)
Day - full day name - first character is upper (9-letters)
day - full day name - all characters is upper (9-letters)
DY - abbreviated day name (3-letters) (upper)
Dy - abbreviated day name (3-letters) - first character is upper
Dy - abbreviated day name (3-letters) - all character is upper
DDD - day of year (001-366)
DD - day of month (01-31)
D - day of week (1-7; SUN=1)
WW - week number of year
CC - century (2-digits)
Q - quarter
RM - roman numeral month (I=JAN; I-XII)
W - week of month
J - julian day (days since January 1, 4712 BC)
AC / BC:
-------
TO-FROM CHAR routines support BC and AC postfix for years.
You can combine BC and AC with TH.
OTHER:
-----
'\' - must be use as double \\
'\\HH\\MI\\SS' --> 11\45\56
'"' - string berween a quotation marks is skipen and not
is parsed. If you wand write '"' to output you must
use \\"
'"Month: "Month' --> Month: November
'\\"YYYY Month\\"' --> "1999 November "
text - the PostgreSQL TO-FROM CHAR support text without '"',
but " text " is fastly and you have guarantee,
that this text not will interprete as keyword.
WARNING:
-------
You DON'T OMIT differention between fill mode (FM prefix)
and standard input in FROM_CHAR (TO_DATE), because this
routines can't scan your input string and conver it to
Datetime. See:
WRONG: FROM_CHAR('August 1999', 'Month YYYY');
RIGHT: FROM_CHAR('August 1999', 'Month YYYY');
or FROM_CHAR('August 1999', 'FMMonth YYYY');
(! Month is 9-letters string if you not set fill-mode !)
---------------------------
TODO / Now is not supported:
---------------------------
- spelled-out SP suffix ( 22 --> Twenty-two )
- AM/PM
- not supported number to character converting
TO_CHAR(number, 'format')
-------------------------------------------------------------------------------
- secondary products :-) ------------------------------------------------------
-------------------------------------------------------------------------------
ORDINAL(int4, text)
-------------------
* Translate number to ordinal number and return this as text
* Examples:
template1=> select ordinal(21212, 'TH');
ordinal
-------
21212ND
template1=> select ordinal(21212, 'th');
ordinal
-------
21212nd