Autor Téma: SQLite problem z dátumom v DateEdit  (Přečteno 948 krát)

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 116
  • Karma: 1
    • Verze Delphi: D7, XE7
SQLite problem z dátumom v DateEdit
« kdy: 16-10-2016, 11:12:27 »
Zdar,

mam taky problem do sqlite databazy zapisujem datum cez takyto command

Kód: [Vybrat]
insert into polozky (id_os,suma,pozn,datum)
values (:osid,:suma,:pozn,date('now'));

funguje to v pohode, datum sa zjavne zapise korektne, funguje aj order by datum atd....

problem vsak nastava ked chcem tento datum nacitat do TDateEdit

pouzijem query

Kód: [Vybrat]
select id_pol,id_os,round(suma,2) as suma,pozn,datum
from polozky
where id_pol = :polid

a v kode nasledne

Kód: [Vybrat]
q_pol.Close;
q_pol.ParamByName('polid').Value:= polid;
q_pol.OpenOrExecute;
q_pol.First;

NumberBox1.Value:=q_pol.FieldByName('suma').AsFloat;
Edit1.Text:= q_pol.FieldByName('pozn').AsString;
DateEdit1.Date:=q_pol.FieldByName('datum_d').AsDateTime;

No a prave na tom poslednom riadku to skonci chybou, datum sa sice do TDateEdit nastavy spavne  ale zaroven to hodi chybovu spravu
2016-10-16 is not valid date and time >:(

Nejaky tip ako to korektne vyriesit ?
Dakujem  :)





Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3006
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:SQLite problem z dátumom v DateEdit
« Odpověď #1 kdy: 16-10-2016, 20:52:18 »
Bolo by dobré najprv prebehnúť fórum.
http://forum.delphi.cz/index.php/topic,15289.0.html
Kvôli tomu som SQLite zanechal.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline dee

  • Plnoletý
  • ***
  • Příspěvků: 116
  • Karma: 1
    • Verze Delphi: D7, XE7
Re:SQLite problem z dátumom v DateEdit
« Odpověď #2 kdy: 16-10-2016, 23:00:59 »
ide o mobilnu aplikaciu, a tak okrem SqLite velmi nemamna vyber ... popisovany problem som vyriesil takto

Kód: [Vybrat]
function ParseDateFromDB(const DateStr: String): TDateTime;
var
  FormatSettings: TFormatSettings;
begin
  FormatSettings.DateSeparator := '-';
  FormatSettings.ShortDateFormat := 'YYYY-MM-DD';
  Result := StrToDate(DateStr, FormatSettings);
end;


bohuzial teraz mam vsak opacny problem potrebujem ulozit datum z DateEditu do databazy a nesprava sa to korektne

Kód: [Vybrat]
insert into polozky (id_os,suma,pozn,datum)
values (:osid,:suma,:pozn,:datum);

Kód: [Vybrat]
FDCommand1.ParamByName('datum').Value:= dateedit1.Date;

no napríklad dnešny datum 16-10-2016 mi to ulozi ako 11-09-459


V tom SQLite jednoznacne chyba typ DateTime


Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3006
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:SQLite problem z dátumom v DateEdit
« Odpověď #3 kdy: 17-10-2016, 10:05:51 »
Poor
Rated 1 time
Citace
V tom SQLite jednoznacne chyba typ DateTime
Čítal si odkaz? Tam sa jednoznačne píše, že SQLite pozná len textové reťazce. Nič iné!
Takže znova urobiť konverziu.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1880
  • Karma: 93
    • Verze Delphi: D2007, XE3, DX10
Re:SQLite problem z dátumom v DateEdit
« Odpověď #4 kdy: 17-10-2016, 11:05:22 »
Excellent
Rated 1 time
V tom SQLite jednoznacne chyba typ DateTime
Nesvadej to na SQLite - ta za nic nemuze, ta jasne v dokumentaci pise:

SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:

    TEXT as ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS").
    REAL as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
    INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.

Applications can chose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.


Takze jestli nekdo za neco muze, tak jsi to bud ty, ze nespravne pouzivas konkretni DB connectivitu a/nebo dana DB connectivita nespravne prevadi datum a cas mezi SQlite API a kodem v Delphi.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Křestní jméno zpěváka Gotta: