Warum, wenn ich einfügen eines DateTime null, ich habe "0001-01-01" in der SQL Server?
Ich versuche eingefügt werden der Wert null (DateTime) in meiner Datenbank ein Feld eingegeben 'Datum', aber ich bekomme immer eine '0001-01-01'. Ich verstehe nicht, das Feld "null zulassen", und ich weiß nicht warum, ich habe das default-Wert.
Ich bin mit C# asp .net mit MVC (Entity Framework), das ist mein code :
Budget_Synthesis newBS = new Budget_Synthesis
{
Budget_Code = newBudgetCode,
Last_Modified_Date = null
};
db.Budget_Synthesis.AddObject(newBS);
Last_Modified_Date eingegeben System.DateTime? also ich weiß nicht, warum Sie dies ändern 'null'.
Wenn ich versuche, um den Wert anzuzeigen, der auf meine Anwendung, die ich bekommen 01/01/0001 00:00:00
Sowie 0001-01-01
mit SSMS
Kann jemand mir erklären, warum ich nicht bekommen kann eine echte 'NULL' ?
Beste Grüße
- Zeigen Sie Ihren code bitte
- Sie sind das einfügen eines c# - Wert von null datetime in einen sqldatetime-Feld?
- Wie wollen Sie einfügen? Diese Angelegenheiten. Viel.
- Wie sind Sie auf einfügen. Durch eine Anwendung oder sql mgmt studio?
- Ihre Dosis DateTime null-Werte zulässt?
- sql server kann nicht sogar store 0001-01-01; der minimale Wert in der sql-server ist der 1. Januar 1753. Wo werden Sie sehen diese 0001-01-01, genau?
- Vielleicht meinte er
datetime2
? - Sie könnte verwenden Sie sql profiler, um zu sehen, was genau Sie versuchen zu analysieren in der Tabelle
- ja, es gibt eine Menge "vielleicht" in dieser Frage. Was wir brauchen, ist mehr detail (Tipp Alex! mehr Details bitte!)
- Re der Letzte edit: Sie zeigen einige code, fügt ein Objekt was aussieht, um ein ORM in irgendeiner Form. Recht; wir sind irgendwo immer... was ORM ist das? Was ist das
AddObject
? Wie ist das ganze konfiguriert? Was Sie nicht gesagt haben, uns etwas darüber, wie all dies wird an die Datenbank... - Edit ich mit meinem C# - code. Ich seh '0001-01-01' mit dem SQL-Manager und "01/01/0001 00:00:00" wenn ich versuche, die Daten anzeigen, die in meiner app.
- Sie sollten die Last_Modified_Date zu ermöglichen nullable-Wert
- Ich benutze Entity Framework, so dass ich nicht wirklich die Details der Anfrage, aber ich habe nicht diese Art von problem vor, ich bekomme immer "null" für jede Art von Daten, außer 'Datum' - Typ. Last_Modified_Date ist wohl zu akzeptieren nullable-Wert, weil es verbunden ist mit meiner DB wo ich überprüft, "null zulassen", mit dem SQL-Manager.
- "Wenn ich versuche, um den Wert anzuzeigen, der auf meine Anwendung, die ich bekommen..." Was bekommen Sie, wenn Sie die Abfrage in SSMS?
- Mit
SELECT Last_Modified_Date FROM Budget_Synthesis
bekomme ich0001-01-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dies ist der Wert, der mit dem null -
DBNull.Value
zum einfügen eines SQL -NULL
var d = new DateTime(); Console.WriteLine(d);
gibt0001-01-01
werden, das lässt mich nicht mit den downvotes.null
, die angibt, dass der Typ wahrscheinlichDateTime?
. Der StandardwertDateTime?
ist nicht 0001-01-01null
zu einemDateTime
irgendwo, und endet als0001-01-01
. Vielleicht ist die Spalte markiert, die als nicht-null-Werte zulässt, in EF. In einer Weisenull
entspricht0001-01-01
, was diese Antwort sagt. Könnte nicht eine stellare Antwort, aber es ist von einem neuen Benutzer, und ich habe nicht das Gefühl, dies verdient downvotes überhaupt.Wenn
Last_Modified_Date
ist der TypDateTime
können Sie nicht "real " null", weil DateTime-Struktur - wie auch andere schon gesagt - null ist nicht zulässig. Also dein Beispielcode wird nicht mal kompilieren.Wenn
Last_Modified_Date
ist der TypDateTime?
(Nullable<DateTime>
) Ihr code korrekt ist, aber-wie @Nikola Dimitroff sagte in seiner Antwort - kann man nicht haben "echte null" in Ihrer Datenbank ist, da der Standardwert fürDateTime?
ist 01/01/0001 00:00:00.Den "echten null", die Sie suchen, ist
DBNull.Value
, aber Sie können es verwenden, nur für System.DBNull geben; wenn Sie zuweisenLast_Modified_Date = DBNull.Value
, unabhängig von der Art desLast_Modified_Date
ist, wird sich der code nicht kompilieren.Wenn man sagt, dass Sie versuchen, einen null -
DateTime
, sind Sie mit einemNullable<DateTime>
(ein.k.einDateTime?
) oder einfachDateTime
? Letzterer ist eine Wert-Typ, und der Standardwert ist genau01/01/0001 00:00:00
null
zu dem, wasDateTime
; soDateTime?
ist die wahrscheinlichsteSystem.DateTime?
generiert EntityFramework, wenn ich verknüpfte meine Modelle mit der DB, deshalb kann ich ihm geben, einen 'null' - aber ich don ' T Ding, warum ändert er es in dieser Standard-Wert.