Ich möchte einen datetime
Wert mit der folgenden SQL-Abfrage in eine Tabelle (SQL Server) einfügen
insert into table1(approvaldate)values(18-06-12 10:34:09 AM);
Aber ich bekomme diese Fehlermeldung. Incorrect syntax near '10'.
Ich habe es mit den Zitaten versucht
insert into table1(approvaldate)values('18-06-12 10:34:09 AM');
Ich erhalte diese Fehlermeldung Cannot convert varchar to datetime
Freundlich helfen! Vielen Dank.
sql
sql-server-2008
datetime
Shee
quelle
quelle
5
?YYYYMMDD HH:MM:SS
(im 24-Stunden-Format - das Weltformat, jeder außer den USA verwendet dies, nicht nur das Militär ...) ohne die Bindestriche verwenden - es funktioniert sogar für dieBritish
Sprache. Wenn SieYYYY-MM-DD HH:MM:SS
jedoch scheitert es - in diesem Fall (die Striche), Sie müssen mit einem getrennten Datum und UhrzeitT
wörtlich zu nehmen .SET DATEFORMAT
Aussage an . Dies ist die Einstellung für eine einzelne Verbindung, die Einstellung kann jedoch serverweit festgelegt werden. Sie können auch angebenSET LANGUAGE
, um beispielsweise zu steuern, welches Zeichen für den Radix und dergleichen verwendet wird, und das Datumsformat wird davon erben (wiederum auf Server- oder Verbindungsebene). Es ist nur so, dass der Standard US-Englisch ist und mdy das US-Format ist. ymd mit 4-Jahres-Daten funktioniert jedoch immer.Eine sprachunabhängigere Wahl für String-Literale ist der internationale Standard ISO 8601 "JJJJ-MM-TTThh: mm: ss". Ich habe die folgende SQL-Abfrage verwendet, um das Format zu testen, und es funktioniert tatsächlich in allen SQL-Sprachen in sys.syslanguages :
Gemäß dem Abschnitt Datums- und Zeitformate für Zeichenfolgenliterale in Microsoft TechNet soll das Standard-SQL-Datumsformat "JJJJ-MM-TT hh: mm: ss" des ANSI-Standards "mehrsprachig" sein. Bei Verwendung derselben Abfrage funktioniert das ANSI-Format jedoch nicht in allen SQL-Sprachen.
Auf Dänisch werden beispielsweise viele Fehler wie die folgenden auftreten:
Wenn Sie eine Abfrage in C # erstellen möchten, die auf SQL Server ausgeführt werden soll, und ein Datum im ISO 8601-Format übergeben müssen, verwenden Sie den Formatbezeichner "s" von Sortable :
quelle
YYYYMMDD
nur für Datum verwenden, und entwederYYYY-MM-DDThh:mm:ss
(mit Bindestrichen und ja, ein TeilT
zwischen Datum und Uhrzeit!) OderYYYYMMDD HH:MM:SS
(keine Bindestriche, kein Trennungsliteral), um wirklichManagement Studio erstellt Skripte wie:
quelle
Sie müssen es wie hinzufügen
quelle
Konvertierung ist nicht erforderlich. Listen Sie es einfach als angegebenes Datum im ISO 8601-Format auf.
Wie so:
Das Trennzeichen muss a sein
/
und von einfachen'
Anführungszeichen umgeben sein.quelle
Wenn Sie Werte über eine beliebige Programmiersprache speichern
Hier ist ein Beispiel in C #
Um das Datum zu speichern, müssen Sie es zuerst konvertieren und dann speichern
FooDate ist eine datetime-Variable, die Ihr Datum in Ihrem Format enthält.
quelle
Ich stoße auf ein allgemeineres Problem: verschiedene (und nicht unbedingt bekannte) Datetime-Formate abzurufen und in die Datetime-Spalte einzufügen. Ich habe es mit dieser Aussage gelöst, die schließlich zu einer Skalarfunktion wurde (relevant für den kanonischen, amerikanischen, ANSI- und britischen \ franch-Datumsstil von ODBC - kann erweitert werden):
quelle