DateAdd Spalte ein überlauf verursacht
Nach dem ausführen der folgenden Abfrage bekomme ich einen Fehler
Hinzufügen eines Werts zu einer 'datetime' - Spalte ein überlauf verursacht.
Ich habe keine Ahnung, warum dies geschieht, wie es funktionierte gut für ein paar Wochen. Ich versuche nur, um weitere Termine ergänzen sich hier und vergleichen Sie die Start-und Enddatum mit einem between
- Klausel.
DATEADD(day, -1 , DATEADD(mm, DATEDIFF(mm,0,posting_date),0)) BETWEEN start_date and end_date
InformationsquelleAutor ace_mccloud | 2012-02-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich doppelte der Fehler mit der folgenden:
Fehlermeldung nach dem ausführen:
Grundsätzlich posting_date im obigen Fall ist die minimum-Datum-Zeit-Wert von SQL server zugelassen. Wenn Sie dann versuchen, subtrahieren Sie 1 Tag aus, dann tritt eine überlauf-Bedingung.
Meine Vermutung ist, dass Sie einen Datenpunkt für die SQL Server minimum Datum Wert.
DATEADD(day, -1 , DATEADD(mm, -1753,0))
scheint zu funktionieren, aberDATEADD(day, -1 , DATEADD(mm, -1754,0))
nicht.Gut.. das erste Ergebnis sollte das Datum 11/30/1753, ist eine gültige SQL server-Datum. Der zweite sollte eval heraus zu 10/31/1753. Egal, keiner von beiden hat etwas zu tun mit der OP Frage
Oops, ich habe einen Tippfehler gemacht: es war -1763 und -1764 (mit 6, nicht 5), so sein Aufruf
DATEDIFF
gibt eine negative Zahl, die kleiner ist als -1764, was bedeutet, dass seineposting_date
muss mindestens 1764 Monate vor 1/1/1900. Guten Fang.Danke Jungs, habe den Fehler Gefunden. Ein Datensatz wurde mit 1753-01-01 00:00:00.000 als das Datum, das gab den Fehler in der Data-Warehouse.
InformationsquelleAutor NotMe
Laut MSDN:
Was ist der Datentyp der Spalte und die reicht von start_date und end_date?
InformationsquelleAutor Patrick