2009-03-11 1 views
0

Ich benutze Oracle 9, aber das System sollte auch für Oracle 8 und 10 funktionieren.Was ist der beste Weg, um Millisekunden in Oracle zu speichern?

Das Problem ist: Datumsfelder können nichts über Sekunden hinaus speichern, aber ich speichere eine Reihe von Ereignissen, die mit Millisekunde auftreten Präzision. Die offensichtliche Lösung besteht darin, eine neue Spalte zum Speichern der Millisekunden zu erstellen. Aber ist das die bessere Lösung?

Es scheint nicht sehr clever zu mir, weil so tun, dass alle meine Abfragen (es gibt eine Menge von ihnen) eine Änderung in der ORDER BY-Klausel benötigt.

+1

Ich glaube Oracle 8 ist zehn Jahre alt, Zeit, um weiterzugehen. – tuinstoel

Antwort

2

In Oracle 8 Sie um eine Arbeit zu tun hatte (varchar Feld oder zwei Felder, ein Datetime und 2. die Millisekunden zu halten)

Wenn Sie irgendwie die Anforderung auf 8 in Oracle zu tun zu vermeiden, sollten die TIMESTAMP-Datentyp

0

Ich würde vorschlagen, Sie wählen zwischen der Unterstützung von Oracle 8 (die bald aus dem Dienst, wenn es nicht bereits außer Betrieb ist) und Millisekunden-Unterstützung. Von den beiden würde ich Oracle 8 ablehnen und nur Oracle 9 oder später unterstützen.

[Faire Offenlegung: Ich arbeite für einen Konkurrenten - ich würde sogar empfehlen, zu uns zu wechseln. Wenn meine Informationen zu Oracle 8, die nicht mehr unterstützt werden, falsch sind, tut mir leid. Aber der Rat ist so unvoreingenommen, wie ich es machen kann.]

+0

Oracle 8 (und 8i und 9iR1) haben seit Jahren keinen Support mehr. Oracle 9iR2 hat kürzlich die Kategorie "lebenslange Unterstützung" eingeführt, was im Grunde genommen keine neuen Fehlerbehebungen bedeutet. –

+0

Danke! Ich dachte es - aber war zu faul, um nach den Informationen zu suchen (und außerdem bin ich ermutigt, nicht auf der Oracle-Seite herumzustochern). Der Rat, Oracle 8 zu ignorieren, ist also vernünftig. Verwenden Sie daher TIMESTAMP. Zweifellos haben sie Systeme auf 8 (oder warum erwähnen Sie es). Aber sie leben von geborgter Zeit. –

0

Wie bereits erwähnt, Zeitstempel ist der Datentyp in Oracle 9 und später, die die Millisekunde Genauigkeit, die Sie suchen, unterstützt. Wenn Sie auch Oracle 8 unterstützen möchten, müssen Sie einen varchar2 (25) verwenden, um den Wert zu speichern. In oracle8 müssen Sie eine Java-Funktion oder ein externes Programm verwenden, um die Millisekunden-Genauigkeit in der varchar2-Spalte der Tabelle zu speichern.

0

Wahrscheinlich zu spät, um diesen Thread zu finden. Aber für frühere Versionen von Oracle, in denen Timestamp nicht unterstützt wird. Man kann den Wert des Zeitstempels immer in einer Long-Datentypspalte speichern. Beim Speichern in der Datenbank kann man die Datei timestamp.getTime() in Java speichern, die lange zurückgibt. Und beim Lesen aus der DB kann man den long-Wert lesen und einen Timestamp erstellen, indem man ihn im Timestamp-Konstruktor bereitstellt. Ich hoffe, dies hilft jemandem, der an Legacy-Systemen arbeitet.

Verwandte Themen