Verwendet das Literal "date" [jjjj-mm-dd] 'von Oracle immer das JJJJ-MM-TT-Muster?

7

Umformuliert, vorausgesetzt, ich benutze Datum wie folgt:

%Vor%

, könnte das Ergebnis irgendetwas anderes als der 10. April 2010 (z. B. 4. Oktober 2010) sein?

UPDATE Ich höre was du und die Ärzte sagen. Aber ...

Wenn ein Stapeljob mit fest codiertem Datum "yyyy-mm-dd": s ausgeführt wird, schlägt er bei einigen (nichtdeterministischen) Berechnungen fehl. Das Ausführen der fehlerhaften SQL-Anweisungen in PL / SQL Developer nie ergibt den gleichen, falschen Wert.

Zuerst habe ich die gleichen Berechnungen (Hunderttausende) mit dem Datum Datum Datumsliteralen mit dem To_Date ('', '') Funktion ausgeführt, und alles hat gut funktioniert.

Dann habe ich NHibernate und seinen LINQ-Provider verwendet und das handgefertigte SQL vollständig ersetzt. ... und alles hat gut geklappt ... NHibernate erzeugt ein Datumsliteral, mit dem Zeitanteil, BTW.

UPDATE Ein Kollege von mir hat einen Code geschrieben, der den Fehler in unserer Umgebung reproduzieren kann. Er veröffentlichte seine Ergebnisse (einschließlich des Codes) in Oracle-Foren: Ссылка

UPDATE Änderte den Titel gemäß der Antwort von zerkms.

    
Martin R-L 06.10.2011, 11:36
quelle

2 Antworten

13

Es ist nicht Funktion , aber Datum literal . Und, Ja, es passt immer YYYY-MM-DD unabhängig von irgendwelchen Oracle-Einstellungen.

    
zerkms 06.10.2011 11:38
quelle
10

Hier ist ein Link zu Oracle 10g SQL-Referenz, auf Datetime-Literalen . Auszug:

  

Das ANSI-Datumsliteral enthält keinen Zeitabschnitt und muss angegeben werden   in genau diesem Format ('YYYY-MM-DD') . Alternativ können Sie angeben   ein Oracle-Datumswert, wie im folgenden Beispiel:

     

TO_DATE('98-DEC-25 17:30','YY-MON-DD HH24:MI')

    
Benoit 06.10.2011 11:40
quelle

Tags und Links