Welcher Datentyp wird zum speichern von Datum / Uhrzeit in Oracle 10g?
Welcher Datentyp wird zum speichern von Datum, Zeit (nicht nur Datum sondern auch Uhrzeit) in die Oracle 10g-Datenbank? Ich habe gelesen, einige von denen, die (möglicherweise irrtümlich) "der Date-Datentyp in Oracle 10g können speichern Datum Zeit" aber die Sache scheint nicht zu passieren, wenn ich versuchen, das zu tun.
Der Datentyp DATE ist ein datetime-Datentyp. Es speichert ein Datum und eine Uhrzeit.
Der Datums-Teil wird, basierend auf der Anzahl der Tage seit dem 1. Januar 4712
BC. Das Teil basiert auf der Anzahl der Sekunden seit
Mitte der Nacht. Der link
Versuchte ich es über Java, die als front-end-und direkt auf die Oracle-terminal mithilfe der folgenden SQL.
insert into discount
values(7, 'Code', 12.5, to_date('11-AUG-2012 06:05:23', 'dd-mon-yyyy hh:mi:ss'),
to_date('20-AUG-2012 07:50:23', 'dd-mon-yyyy hh:mi:ss'))
Funktioniert es aber (in beiden Fällen) Oracle ignoriert einfach den Teil und fügt nur die angegebenen Daten in die SQL ohne Fehler?
Welcher Datentyp wird zum speichern von Datums-Zeit in Oracle 10g? Ist es TimeStamp
?
- Ich persönlich bevorzuge
TIMESTAMP
oderTIMESTAMP WITH TIMEZONE
- Wie kann man sagen, dass Oracle ignoriert die Zeit?
- Es zeigt immer die Zeit Teil, als
12:00:00
in meine front-end -, JSP-wo Datum Uhrzeit formatiert ist, obwohl ich die richtige Zeit Teil andere als in diesem12:00:00
und das Teil wird gar nicht angezeigt auf der Oracle-Eingabeaufforderung. - Auf der Vorderseite (Java), die Lösung gefunden hier entfernen der
type="date"
- Attribut der property-mapping-Dateixxx.hbm.xml
Ruhezustand. Nach, die Lösung, wenn man das type-Attribut mit dem Wertdate
odertimestamp
es wird nicht genau konvertieren Sie die Werte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
DATE
im Oracle hat immer eine Tag-Komponente und eine Komponente. Vorausgesetzt, die letzten beiden Spalten in derDISCOUNT
Tabelle deklariertDATE
ist es furchtbar unwahrscheinlich, dass Oracle einfach zu ignorieren, die Zeit-Komponente.Was macht Sie glauben, dass die Zeit-Komponente wird ignoriert? Meine Vermutung ist, dass Sie die überprüfung der Daten durch ausführen einer Abfrage wie
aus SQL*Plus, SQL Developer, TOAD, oder eine andere GUI. Wenn Sie das tun, wird standardmäßig das Datum, das angezeigt wird nur eine Tag-Komponente und nicht eine Zeit-Komponente, die bedeutet nicht, dass die Zeit-Komponente wird verworfen. Stattdessen ist es das Ergebnis mit einem Standard -
NLS_DATE_FORMAT
dass nicht-Anzeige der Zeit-Komponente. Sie können erzwingen, dass die Zeit-Komponente angezeigt werden, indem Sie eine expliziteTO_CHAR
Sie in Ihrer Abfrage (beachten Sie, dass ich vermute, die Namen Ihrer Spalten)Oder ändern Sie Ihre Standard -
NLS_DATE_FORMAT
to_char('...', '...')
Funktion ruft es die korrekte Datum, Zeit, aber, nachdem ich angewendetALTER SESSION SET nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
es immer noch, nur ruft den Datum-Teil der Oracle-terminal (mitSELECT *FROM discount;
). Gibt es einen Weg, um dauerhaft angeben der Datum-Zeit-format?NLS_DATE_FORMAT
ist eine client-Einstellung, damit jeder client und jeder Sitzung kann eine andere Einstellung. Sie sollten nicht hängt von der Einstellung wird alles in allem. Möglicherweise könnten Sie einen login-trigger, der überschreibt die client-Einstellung für bestimmte Benutzer. Sagen Sie aber, dass unmittelbar nach der Ausführung derALTER SESSION
dass in der gleichen SQL*Plus-Sitzung sind Sie nicht zu sehen, das format ändern?ALTER SESSION
arbeitete auch richtig auf die SQL-Befehlszeile. Ich war die Anwendung es auf der Oracle-Datenbank web (GUI) anstelle der Anwendung auf dasSQL command line
obwohl erwähnt wird klar in der Antwort. Fühlte sich so Leid.Oracle
DATE
beinhaltet die Zeit als gut. Aus der docs:Kann es sein, das tool(SQL Developer, SQL*Plus), die Sie verwenden, das ist Betrug Sie. Versuchen
Beachten Sie auch, dass der date-Datentyp speichert nur bis zu den Sekunden.
TIMESTAMP
oderTIMESTAMP WITH TIME ZONE
sind präziser.