DATE
är en inbyggd typ i Oracle, som representeras på ett fast sätt och du har ingen kontroll över det.
Så:
Jag vill att det ska infogas [...] som 08/01/2011 12:00:00 AM
Ovanstående är meningslöst. Du infogar inte en sträng, du infogar ett datum.
Format är endast användbart när du vill:
- för att konvertera en sträng till en intern representation av datum med
TO_DATE
(formatmask:hur man analyserar strängen); - för att konvertera en intern representation av datum till en sträng med
TO_CHAR
(formatmask:hur man renderar datumet).
Så i ditt exempel tar du ett DATUM, du konverterar det till en STRING med något format och konverterar det tillbaka till DATUM med samma format. Detta är ett nej.
Nu, vad din klient visar:detta beror på att din Oracle-klient inte visar DATUM-fält direkt och NLS-lagret kommer att konvertera alla DATUM-fält som är valt. Så det beror på din plats som standard.
Det du vill ha är SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM dual;
som explicit kommer att utföra konverteringen och returnera en sträng.
Och när du vill infoga ett datum i en databas kan du använda TO_DATE
eller datum bokstaver.