DATE
jest wbudowanym typem w Oracle, który jest reprezentowany w ustalony sposób i nie masz nad nim kontroli.
A więc:
Chcę to wstawić [...] jako 08/01/2011 12:00:00 AM
Powyższe jest bezsensowne. Nie wstawiasz ciągu, tylko wstawiasz datę.
Format jest przydatny tylko wtedy, gdy chcesz:
- przekonwertować ciąg na wewnętrzną reprezentację daty za pomocą
TO_DATE
(maska formatu:jak analizować ciąg); - przekonwertować wewnętrzną reprezentację daty na ciąg znaków za pomocą
TO_CHAR
(maska formatu:jak renderować datę).
Tak więc w twoim przykładzie bierzesz DATĘ, konwertujesz ją na STRING z jakimś formatem i konwertujesz z powrotem na DATĘ w tym samym formacie. To jest zakaz.
Teraz, co wyświetla twój klient:dzieje się tak dlatego, że twój klient Oracle nie wyświetla bezpośrednio pól DATE, a warstwa NLS skonwertuje dowolne wybrane pole DATE. Tak więc domyślnie zależy to od lokalizacji.
To, czego potrzebujesz, to SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM dual;
który jawnie wykona konwersję i zwróci ciąg znaków.
A kiedy chcesz wstawić datę do bazy danych, możesz użyć TO_DATE
lub literały daty.