Seite 1 von 1
SQL Milliseconds verschwinden....
Verfasst: 3. November 2018, 17:40
von satmax
Ich lese von einer externen SQL DB ein Datetime Feld und schreibe es in meine Datenbank:
Adressen.Sync_ModifyDate=WWSADRESSE.WWSMODIFYDATE
Prüfe ich hier mit dem Debugger steht im Feld Adressen.Sync_ModifyDate der richtige Wert der Millisekunden. Nach dem Save via HModify(Adressen) werden die Millisekunden einfach auf die nächste Zehntelsekunde aufgerundet.
Aus
20181008195911507 wird einfach
20181008195912000
Beide Felder sind in der MS SQL Datenbank als Datetime definiert.
Hat da jemand eine Idee?
Re: SQL Milliseconds verschwinden....
Verfasst: 4. November 2018, 13:10
von Herbert
Schwierig.
Was ist, wenn der Datentyp in der SQL Tabelle auf DateTime2 gesetzt wird? Wird empfohlen seit Server 2008
In einem französischen Forum gefunden sollt man andernfalls konvertieren.
"CONVERT(DATETIME, '"+DateToString(VariableDate, "AAAAMMJJ") + " " + TimeToString(VariableHour, "HH:MM:SS.CC") +"', 121)"
Re: SQL Milliseconds verschwinden....
Verfasst: 4. November 2018, 19:37
von satmax
Danke für die Tipps, werde es in den nächsten Tagen mal austesten.
Jaja, Windev und französisch... Aber wir haben ja, Gott sei Dank, dich lieber Herbert!
Re: SQL Milliseconds verschwinden....
Verfasst: 5. November 2018, 11:04
von satmax
Herbert hat geschrieben: ↑4. November 2018, 13:10
In einem französischen Forum gefunden sollt man andernfalls konvertieren.
"CONVERT(DATETIME, '"+DateToString(VariableDate, "AAAAMMJJ") + " " + TimeToString(VariableHour, "HH:MM:SS.CC") +"', 121)"
Das checke ich leider nicht. Mit convert() ist hier die MS SQL Funktion gemeint. Wie soll ich das in Windev machen?
Ich weise einfach im Programm mit
Adressen.meindatum=myDateTime
einem Tabellenfeld einen Wert zu. An dieser Stelle kann ich kein convert() vom SQL Server verwenden, wüsste nicht wie.
Mit einem SQL Statement aus Windev klappt es auch nicht:
Code: Alles auswählen
UPDATE
Adressen
SET
Typ = 256,
Name1 = {ParamName1},
LagerkundeJN = '1',
Sync_TPSSyncDate = {ParamSync_TPSSyncDate}
WHERE _ID=1
Das mit dem Datentype datetime2 teste ich noch.
Re: SQL Milliseconds verschwinden....
Verfasst: 5. November 2018, 12:25
von satmax
Standard DateTime Feld:
SyncWerk.Sync_TPSSyncDate = "20171231 19:06:36.123"
Millisekunden werden abgeschnitten, Zuweisung von einem Datumsfeld funktioniert
DateTime2 Feld
SyncWerk.TestDate = "20161231 19:06:36.123"
Funktioniert, dafür muss ich hier aber ein Datum in einen String konvertieren, Zuweisung von einem Datumsfeld funktioniert NICHT wenn es ein DateTIme2 Feld ist. Aber mit dieser Variante kann/muss ich leben.
geht auch:
DateTime2 Feld
SyncWerk.TestDate = "20161231 19:06:36.1234567"