Wie aktualisiert man eine DateTime auf SQL Server, indem man Millisekunden mit Delphi 7 ADOQuery.ExecSQL speichert?

8

Wie aktualisierst du eine DateTime auf SQL Server 2012 unter Beibehaltung von Millisekunden mit Delphi 7 ADOQuery.ExecSQL ?

SQL Server scheint die Sekundengenauigkeit zu löschen, so dass ich keine Millisekunden oder Mikrosekunden in einem SQL Server 2012 DateTime2[7] -Feld habe. MS Access lässt die Millisekunden mit dieser ADO-Abfrage nicht fallen. Der folgende ADOQuery-Code scheint mit allen DataTypes zu funktionieren, die mir wichtig sind, mit Ausnahme von SQL Server DateTime .

Die Verbindungszeichenfolge, die ich verwende, ist: Provider=SQLNCLI11.1;Integrated Security=SSPI;User ID="";Initial File Name="";Server SPN="";Data Source=myPC\SQLSERVER2012EXP;Initial Catalog=MyDatabase

Hier ist mein Code:

%Vor%

AKTUALISIERT

Geänderter Code für MS Access und SQL Server:

%Vor%     
user610064 11.01.2013, 16:49
quelle

1 Antwort

6

DateTime2 (7) über Ado wird als TWideStringField gesehen.
Datetime wird als TDateTimeField angezeigt.
Die interne Konvertierung ignoriert beim Zuweisen einer TDatetime Millisekunden wie DateTimeToStr (dt).
Sie können dies umgehen, indem Sie eine eigene Konvertierung in WideString verwenden.

%Vor%

mit dann wird folgendes zum Runden führen:

%Vor%     
bummi 12.01.2013, 07:54
quelle

Tags und Links