to_char(), md5() (long) - Mailing list pgsql-hackers

From Zakkr
Subject to_char(), md5() (long)
Date
Msg-id Pine.LNX.3.96.991016141339.17812A-100000@ara.zf.jcu.cz
Whole thread Raw
Responses Re: [HACKERS] to_char(), md5() (long)
List pgsql-hackers
Hi hackers,
1) I programming to_char() routine (inspire with oracle, and with good    advice from Thomas L.) Current version is on
 ftp://ftp2.zf.jcu.cz/users/zakkr/pg/ora_func.tar.gz, 
 
   (In future I want implement more (oracle compatible routines (to_date,    to_number.. and more)..)
2) I have comlete imlementation of MD5 routine for PqSQL    (ftp://ftp2.zf.jcu.cz/users/zakkr/pg/md5.tar.gz). As base
forsource code   is used code from Debian md5sum. In Debian is this code distributed    _without_ some restriction
underGPL. Is any problem add this code    (if we want) to PgSQL contrib? 
 
   (If it is not problem I can try make more routines based on md5   (aggregate func. - md5_count() ...etc)).
I enclose description for the current version of to_char(). Please, send me any commets.. 
                        Zakkr

------------------------------------------------------------------------------
TO_CHAR(datetime, text)* now is not supported:    - spelled-out SP suffix    - AM/PM    - ...and not supported number
tocharacter converting    TO_CHAR(number, 'format')
 
* now is supported:
    suffixes:        TH ot th    - ordinal number                                    FM        - fill mode      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-letter)     Month
-full month name - first character is upper (9-letter)     month    - full month name - all characters is upper
(9-letter)    MON    - abbreviated month name (3-letter)    Mon    - abbreviated month name (3-letter) - first
characteris upper     mon    - abbreviated month name (3-letter) - all characters is upper     MM    - month (01-12)
DAY    - full day name (upper) (9-letter)     Day    - full day name - first character is upper (9-letter)    day    -
fullday name - all characters is upper (9-letter)     DY    - abbreviated day name (3-letter) (upper)     Dy    -
abbreviatedday name (3-letter) - first character is upper      Dy    - abbreviated day name (3-letter) - all character
isupper      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)
 
* Other:    \        - must be use as double \\        - if \\ is in front " is \\ direct character        ex:
     \\    -is->    \            \\"    -is->    "        " of text "            - all between " is output as text (not
parsed)                * Note:- as base for date and time is used full PostgreSQL DateTime range
 

* Examples:
template1=> select to_char('now', 'HH24:MI:SS, Day, Month, Y,YYY');
to_char
-------------------------------------
16:53:17, Friday   , October  , 1,999

template1=> select to_char('now', 'HH24:MI:SS, FMDay, FMMonth, Y,YYY');
to_char
--------------------------------
16:55:47, Friday, October, 1,999

template1=> select to_char('now', 'DDDth DDDTH SSth Y,YYYth FMSSth');
to_char
----------------------------
288th 288TH 02nd 1,999th 2nd

template1=> select to_char('now', 'Hello HH:MI:SS day');
to_char
------------------------
Hello 05:00:12 friday

template1=> select to_char('now', 'Hello "day" HH:MI:SS day');
to_char
----------------------------
Hello day 05:00:33 friday

template1=> select to_char('now', '\\"Hello "day" HH:MI:SS FMday\\"');
to_char
---------------------------
"Hello day 05:01:15 friday"

template1=> select to_char('now', 'HH\\MI\\SS');
to_char
--------
05\10\29

---end-to_char()

------------------------------------------------------------------------------
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

---end-ordinal()

------------------------------------------------------------------------------





pgsql-hackers by date:

Previous
From: Michael Meskes
Date:
Subject: Re: [HACKERS] The new globe
Next
From: Oleg Bartunov
Date:
Subject: RE: [HACKERS] vacuum of permanently updating database