SQL Milliseconds verschwinden....

Alle Themen rund um die Erstellung von Programmen
Antworten
satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

SQL Milliseconds verschwinden....

Beitrag 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?

Herbert
Site Admin
Beiträge: 529
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Kontaktdaten:

Re: SQL Milliseconds verschwinden....

Beitrag 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)"

satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

Re: SQL Milliseconds verschwinden....

Beitrag 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! :)

satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

Re: SQL Milliseconds verschwinden....

Beitrag 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.

satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

Re: SQL Milliseconds verschwinden....

Beitrag 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"

Antworten