Databáze > MS SQL

ADO datetime ukládání včetně milisekund

<< < (2/3) > >>

Jirka:
Jen tak pro otestování  ..  masku píši z hlavy ..
FieldByName('HeartBeat').AsString:=FormatDateTime('DD.MM.YYYY hh:nn:ss.zzz', now)

jaja:
Ano, editiovane pole je typu ftDateTime:


--- Kód: Delphi ---var col: TFieldType;begin  with ADOQuery1 do  begin    SQL.Text:='select top(1) * from Table1';    Active:=True;    if not EOF then      col:=FieldByName('HeartBeat').DataType; //col value is ftDateTime

pf1957:

--- Citace: Delfin  15-04-2019, 11:48:27 ---A DataType objektu daneho pole je ftDateTime? Neni textoveho typu jak zminuje linkovane vlakno ze Stack Overflow pro sloupec DATETIME2? Paklize by tomu tak bylo, implicitni konverzi z datumocasu na text by doslo prave ke ztrate hodnoty milisekund.

--- Konce citace ---
Ja bych se podival, jestli pouzivas nativniho klienta, kdyz se pouzije nejaky ten obskurni universal SQL Server nebo jak se to jmenuje, tak ten prave nektere datove typy prasi pres stringy a leze z nej huhvi co. Nam fallback na takovy driver (nejnovejsi driver FireDAC neumi vyhledat) docela zamotal hlavu, nez jsme prisli, o co se jedna. Zkus mu klienta explicitne specifikovat https://docs.microsoft.com/en-us/sql/relational-databases/native-client/applications/using-ado-with-sql-server-native-client?view=sql-server-2017

jaja:
prirazeni jako string ulozi casovou znamku, ale bez milisekund, resp. milisekundy jsou 0:
FieldByName('HeartBeat').AsString:=FormatDateTime('DD.MM.YYYY hh:nn:ss.zzz', now)

pokud zkusim jako Variant:

--- Kód: Delphi ---var v: variant;      v:= variant(formatdatetime('dd.mm.yyyy hh:nn:ss.zzz',now));      FieldByName('HeartBeat').AsVariant:=v; pak vyjimka: EVariantTypeCastError with message'Could not convert variant of type (UnicodeString) into type (Date)'.

jaja:
pouzity provider OLE DB:
Provider=SQLOLEDB.1;Persist Security Info=True;Initial Catalog=Database;Data Source=.\SQLEXPRESS

Navigace

[0] Seznam témat

[#] Další strana

[*] Předchozí strana

Přejít na plnou verzi