Frage

Ich frage mich, warum SqlDateTime.MinValue nicht das gleiche wie DateTime.MinValue ist?

War es hilfreich?

Lösung

Ich denke, der Unterschied zwischen SQL ist und von .NET Datum Datentypen aus der Tatsache stammt, dass SQL Server Datetime Datentyp, dann ist es Minimal- und Maximalwerte, und es ist Präzision viel älter als .NET der Datetime-Datentyp.

Mit dem Aufkommen von .NET, entschied ich das Team, dass der Datumsdatentyp einen natürlich haben sollte Minimalwert, und 01.01.0001 scheint eine ziemlich logische Wahl, und sicherlich von einem < em> Programmiersprache , anstatt Datenbank Perspektive ist dieser Wert natürlicher.

Im übrigen mit SQL Server 2008, gibt es eine Reihe von neuen Datum-basierten Datentypen ( Datum , Zeit , DateTime2 , SQL Performance Tuning: Daten in SQL

Andere Tipps

Da in SQL Server das Mindest Datum, das in einem Datetime-Feld gespeichert werden kann (1753.01.01), ist nicht gleich die MinValue des DateTime- .NET-Datentypen (0001/1/1).

1753 war das Datum des ersten adopter des Gregorianischen Kalenders (England). Wie, warum dies über 01.01.0001 gewählt wurde - es besteht kein Zweifel, Erbe, wenn SQL Server war in den 1990er Jahren Sybase zurück. Sie must've machte die Design-Entscheidung frühzeitig erkannt und das Microsoft SQL-Team hat keinen Grund zu ändern gesehen.

Seit der Explosion von .NET und der Integration der es in SQL Server, gibt es jetzt die DateTime2 Objekt für Kompatibilität. Wenn Sie ein NHibernate-Nutzer sind, können Sie diese Art bieten in Ihrer Typzuordnung DateTime.Min Probleme zu vermeiden

.NET Daten sorgen für andere Kalender neben dem gregorianischen ein:

  • Kalender
    • ChineseLunisolarCalendar
    • EastAsianLunisolarCalendar
    • GregorianCalendar
    • Jüdische Kalender
    • HijriCalendar
    • Japanese
    • JapaneseLunisolarCalendar
    • JulianCalendar
    • KoreanCalendar
    • KoreanLunisolarCalendar
    • PersianCalendar
    • Taiwan
    • TaiwanLunisolarCalendar
    • ThaiBuddhistCalendar
    • UmAlQuraCalendar

Die JulianCalendar infact pre-dates DateTime.MinValue

Zwei verschiedene Gruppen entschieden, was „Minimum“ für sie bedeutet im Hinblick auf Datum / Uhrzeit.

SQL verwendet eine andere interne Darstellung für Datetime.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top