SQL Server einfügen von Datum 1/1/1900
Ich bin mit ASP-Classic-Seite zum einfügen des Datensatzes in der Tabelle.
Ich bin mit form-element für 5 Felder viz. [ABC] ([code], [updatedate], [fahne], [Mfdate]. Und mit der Datum-Steuerelement ausgewählten Datum in Mdate, wenn der Benutzer nicht wählen Sie die Mdate, die Abfrage, ist es immer gebildet in meiner ASP-Seite ist, wie unten
INSERT INTO [ABC] ([code], [updatedate], [flag], [Mfdate])
VALUES('203 ', '6/12/2013', 'N/A', '')
Beim ausführen in SQL Server einfügen von Datum 1/1/1900
für Mfdate
aber der Benutzer hat keine Auswahl an Wert.
Warum ist es passiert wie diesem?
Den Datentyp für Mfdate
ist datetime
.
Der Wert " übergeben wird, in für Mfdate. Das ist nicht das gleiche wie NULL.
Gibt es einen trigger für die Tabelle?
Auch ist es "1990" oder "1900"?
ja, aber der OP sagt "1990"
Gibt es einen trigger für die Tabelle?
Auch ist es "1990" oder "1900"?
SELECT CAST('' as datetime)
= 1900-01-01 00:00:00.000
ja, aber der OP sagt "1990"
InformationsquelleAutor Codelearner | 2013-06-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht es als null, wird Sie versuchen, legen Sie eine leere Zeichenfolge (
''
). Sie brauchen:Obwohl wirklich, wenn Sie gehen, um die Daten einzufügen, am besten legen Sie Sie im format YYYYMMDD, wie:
nach ISO-8601, JJJJ-MM-TT das akzeptiert, Datum-format, wie ich vorgeschlagen habe. Aber Aaron Bertrand konnten zeigen, bis zu jeder minute, zu sagen, dass ich falsch bin.
Ja, Aaron besteht darauf, dass
'YYYYMMDD'
verwendet werden sollte, da gibt es (seltene) Situationen, in denen auch die YYYY-MM-DD wird nicht in SQL-Server: Schlechte Gewohnheiten zu treten : mis-handling Datum / range-AnfragenSie wirklich brauchen, um Bearbeiten Sie Ihre Frage mit dem code, da ich keine Ahnung habe, wenn Sie mit C#, VB.NET, Java, PHP, Perl oder etwas anderes. Im Grunde reduziert sich auf die überprüfung für den leeren string, und die übergabe in das entsprechende äquivalent von NULL für den parameter.
Ich sehe keinen code. Wie genau baust du den SQL-string?
InformationsquelleAutor LittleBobbyTables
Zeitalter, oder Nullpunkt, der SQL Server-Kalender ist der 1. Januar 1900 im start-Tag (00:00:00.000).
Die interne Darstellung einer
datetime
besteht aus 2 32-bit-Ganzzahlen mit Vorzeichen. Die high-order integer ist in der Grafschaft von Tagen seit Beginn der Epoche zurück; das niedrige ganze Zahl ist die Anzahl der Millisekunden, die seit dem start-Tag. Etwas, dass die Ergebnisse in derdatetime
Wert der Darstellung als null, wie:wird der Ertrag der epochalen
datetime
Wert von1 January 1900 00:00:00.000
.Einen
null
jedoch konvertiert wird ... naja ...null
, als der SQL-standard erfordert, dass alle Ausdrücke, oder testen Sie mit einemnull
(mit Ausnahme des expliziten test für die Nichtigkeit mitis [not] null
muss selbst beurteilen zunull
.OTOH, wenn Sie die SQL Server-Optionen einrichten zu behandeln
null
- und null-Zeichenfolgen ziemlich austauschbar, so dass Sie vielleicht auch wind-up mit der Epoche Datum.InformationsquelleAutor Nicholas Carey