Skippi 0 Geschrieben 17. April 2018 Melden Teilen Geschrieben 17. April 2018 Hallo zusammen Ich beisse mich an folgendem Problem die Zähne aus: Habe ein SQL-Server (13.0.4206) Feld mit Spaltenname "sql_tbl_test_datetime" Datentyp "datetime" Manuel, das per Microsoft SQL Server Management Studio (v17.6) kann ich das Feld mit Format yyyy-MM-dd HH:mm:ss.fff zum Beispiel 2018-04-13 19:26:48.333 abfüllen und auch speichern. Alles gut Wenn ich aber per (Microsoft Visual Studio 2010, Version 10.0.40219.1 SP1Rel, Microsoft .NET Framework Version 4.7.02556 SP1Rel) das Feld mit: Dim sqlcmd AsString = "INSERT INTO sql_tbl_test " & _ "(sql_tbl_test_datetime2 ) " & _ "VALUES " & _ "('2018-04-13 19:26:48.333')" abfüllen will, bekomme ich folgende Fehlermeldung vom Sql: Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs. Die Anweisung wurde beendet. Wenn ich die Anweisung : Dim sqlcmd AsString = "INSERT INTO sql_tbl_test " & _ "(sql_tbl_test_datetime2 ) " & _ "VALUES " & _ "('2018-04-13 19:26:48')" absetze, ist der SQL zufrieden aber der Wert im SQL DateTime-Feld ist: '2018-04-13 19:26:48.000 Irgend welche Vorschläge? Besten Dank Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 17. April 2018 Melden Teilen Geschrieben 17. April 2018 (bearbeitet) Moin, was genau ist jetzt das Problem? Geht es um die Millisekunden? Laut https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-2017 sollte als Trenner auch der Doppelpunkt akzeptiert werden, geht das von deinem VS-Code aus? Gruß, Nils bearbeitet 17. April 2018 von NilsK Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 17. April 2018 Melden Teilen Geschrieben 17. April 2018 Schon mal getestet, die Millisekunden auch mit nem Doppelpunkt statt Punkt abzugrenzen? Zitieren Link zu diesem Kommentar
Skippi 0 Geschrieben 17. April 2018 Autor Melden Teilen Geschrieben 17. April 2018 Danke, für eure Frage und den Vorschlag! Das Problem ist das ich gerne yyyy-MM-dd HH:mm:ss.fff zum Beispiel 2018-04-13 19:26:48.333 in mein DateTime Feld abfüllen möchte. Und zwar MIT Millisekunden. Und nein: Dim sqlcmd As String = "INSERT INTO sql_tbl_test " & _ "(sql_tbl_test_datetime ) " & _ "VALUES " & _ "('1968-10-23 12:45:37:123')" geht auch nicht. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 17. April 2018 Melden Teilen Geschrieben 17. April 2018 Moin, wenn du genau dieses INSERT-Kommando im SQL Studio ausführst, kommt dann auch der Fehler? Gruß, Nils Zitieren Link zu diesem Kommentar
Skippi 0 Geschrieben 17. April 2018 Autor Melden Teilen Geschrieben 17. April 2018 Ja, leider! Wenn ich im Microsoft SQL Server Management Studio (v17.6) den Befehl: INSERT INTO sql_tbl_test (sql_tbl_test_datetime ) VALUES ('1968-10-23 12:45:37.888') oder INSERT INTO sql_tbl_test (sql_tbl_test_datetime ) VALUES ('1968-10-23 12:45:37:888') absetze erhalte ich die gleiche Fehlermeldung Meldung 242, Ebene 16, Status 3, Zeile 2 Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs. Die Anweisung wurde beendet. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 17. April 2018 Melden Teilen Geschrieben 17. April 2018 Ist die Spalte als Datetime oder als Datetime2 deklariert? M.W. brauchts für Millisekunden den "größeren" Datetime-Typ. Zitieren Link zu diesem Kommentar
Skippi 0 Geschrieben 17. April 2018 Autor Melden Teilen Geschrieben 17. April 2018 Die Spalte ist als DateTime deklariert. Maximal möglicher Wert = yyyy-MM-dd HH:mm:ss.fff z.B. '1968-10-23 12:45:37.888' Bei DateTime2 maximal möglicher Wert = yyyy-MM-dd HH:mm:ss.ffffff z.B.'1968-10-23 12:45:37.888000' Es muss also möglich sein in den FeldTyp DateTime den Wert '1968-10-23 12:45:37.888' zu schreiben! VIELEN DANK FÜR DIE UNTERSTÜTZUNG! Die Lösung lautet: INSERT INTO sql_tbl_test (sql_tbl_test_datetime ) VALUES ('1968-10-23T12:10:05.125') Das Grosse T zwischen Datum und Zeit machten den kleinen, aber entscheidende Unterschied. Sau b***d aber auch! Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 17. April 2018 Melden Teilen Geschrieben 17. April 2018 Moin, ah, OK. Danke für die Rückmeldung! Gruß, Nils ... what a difference a T makes ... Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 17. April 2018 Melden Teilen Geschrieben 17. April 2018 Kleiner Tipp: Jeder SQL-Server hat mehr oder weniger sinnvolle Funktionen, um solche Dinge zu formatieren, bei MS z.B.: https://technet.microsoft.com/en-us/library/hh213396(v=sql.110).aspx Bei z.B. DB2 kann man mittels https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0007107.html Die korrekte Formatierung als Parameter mitgeben... Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.