Oracle äquivalent zu SQL Server/Sybase DateDiff
Wir sind jetzt mit NHibernate eine Verbindung zu verschiedenen Datenbank-Basis, auf denen unsere software installiert ist. Also ich bin Portierung viele SQL-Prozeduren für Oracle.
SQL Server hat eine nette Funktion DateDiff, die einen Teil des Datums, startdate und enddate.
Datum Teile Beispiele sind Tag, Woche, Monat, Jahr, etc. . .
Was ist die Oracle-äquivalent?
Ich habe nicht gefunden, eine habe ich, um meine eigene version davon?
(update von Mark Harrison) es gibt einige nette Antworten, die erklären, Oracle Datum rechnen. Wenn Sie eine Oracle-datediff() siehe Einsteins Antwort. (Ich brauche dies, um spme SQL-Skripts kompatibel zwischen Sybase und Oracle.) Beachten Sie, dass diese Frage gilt gleichermaßen für Sybase.
InformationsquelleAutor David Basarab | 2008-09-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
JohnLavoie - Sie brauchen das nicht. DATUM in Oracle ist tatsächlich ein Datum und eine Uhrzeit-Datentyp. Der einzige Unterschied zwischen DATE und TIMESTAMP ist zu diesem ZEITPUNKT aufgelöst wird, nach unten auf die zweite, aber TIMESTAMP behebt nach unten, um die micro Sekunde. Daher die Fragen-Tom-Artikel ist vollkommen gültig für TIMESTAMP-Spalten als gut.
InformationsquelleAutor andy47
Ich habe die meisten dieser aus einem alten tom-Artikel vor ein paar Jahren, einige bugs behoben, die aus dem Artikel und gereinigt. Die Demarkationslinien für die "datediff" berechnet werden anders zwischen oracle und MSSQL, so dass Sie müssen vorsichtig sein, mit einigen Beispielen der realen Welt gibt, die nicht ordnungsgemäß Konto für MSSQL/Sybase-Stil-Grenzen, die nicht Bruch-Ergebnisse.
Mit dem folgenden Sie sollten in der Lage sein zu verwenden, MSSQL syntax und die gleichen Ergebnisse erhalten, wie MSSQL wie SELECT DATEDIFF(dd,getdate(),DATEADD(dd,5,getdate())) FROM DUAL;
Ich nur behaupten, dass es funktioniert - nicht, dass seine effecient oder der beste Weg, es zu tun. Ich bin kein Oracle Mensch 🙂 Und möchten Sie vielleicht zweimal überlegen, über die Verwendung meiner Funktion Makros zur Problemumgehung müssen Sie Anführungszeichen um TT,mm,hh,mi..etc.
(update von Mark Harrison) Hinzugefügt dy Funktion als alias für dd.
InformationsquelleAutor
Tom ' s Artikel ist sehr alt. Es bespricht nur das DATUM geben. Wenn Sie TIMESTAMP-Typen dann Datum-Arithmetik ist in PL/SQL.
http://www.akadia.com/services/ora_date_time.html
oder
InformationsquelleAutor
Könnten SIE eine Funktion schreiben, die in oracle für das
und verwenden Sie es wie :
InformationsquelleAutor Kamyar Gilak