Firebird timestamp

Firebird timestamp
2006-12-21T18:53:34+01:00
2006-12-22T22:41:33+01:00
2022-11-02T17:10:41+01:00
szilveszter
Helló!

Következő a problémám:

Van egy firebird táblám amiben van egy timestamp tip. mező
szeretnék erre egy lekérdezést csinálni, de nem tudom hogy a paramétert hogy adjam meg.
Ha datetime típusként adom meg akkor mindíg üres eredményt vissza.
Ha átkonvertálom DateTimeToSQLTimeStamp-al akkor meg nem megfelelő típus a paraméternek.
ADOQuery-vel csinálom a lekérdezést. Probáltam már a ADOQuery paraméter típusát átállítani timestamp-re de nem lehet. Tud valaki megoldást.
Előre is köszönöm a segítséget.
Mutasd a teljes hozzászólást!
'yyyy.mm.dd hh:mm:ss'
ilyen alakban add meg stringként a paramétert.

WHERE RENDELESFEJ_VIEW.ENDTIME >= '2006.12.22 00:00'
AND RENDELESFEJ_VIEW.ENDTIME < '2006.12.23 23:59'

Itt ENDTIME timestamp típusú mező.

Timestamp részre (pölö: nap, óra) kereséshez az "rFunc UDF Library" DateToStr függvényét ajánlom:

where Cast(DateToStr(ENDTIME ,'%d') as Integer) = 10
(szűrés tizedikére)
Mutasd a teljes hozzászólást!

  • Ebbe a problémába én is belefutottam már ugyanígy. Miután nem ment sehogy, nem vacakoltam vele, hanem szétszedtem két mezőre, külön tárolva a dátumot, külön az időt. Nem sokkal macerásabb a kezelése. Persze ez nem "jó" megoldás, úgyhogy ha valaki tud jobbat, kérem én is, hogy ne tartsa vissza...
    Mutasd a teljes hozzászólást!
  • Esetleg a cast vagy az extract segíthet
    where cast(valtozott as date) = '2006.12.22'
    Mutasd a teljes hozzászólást!
  • Az a gond, hogy nem csak a dátumra, hanem az időre is szükség van a lekérdezésben. Még várok egy kicsit, hátha lesz valami ötlet. Ha nem akkor maradok Dester javaslatánál.
    Mutasd a teljes hozzászólást!
  • Bocsi azt hittem egyértelmű

    where cast(valtozott as date) = '2006.12.22' and cast(valtozott as time) = '17:00:00'
    Mutasd a teljes hozzászólást!
  • 'yyyy.mm.dd hh:mm:ss'
    ilyen alakban add meg stringként a paramétert.

    WHERE RENDELESFEJ_VIEW.ENDTIME >= '2006.12.22 00:00'
    AND RENDELESFEJ_VIEW.ENDTIME < '2006.12.23 23:59'

    Itt ENDTIME timestamp típusú mező.

    Timestamp részre (pölö: nap, óra) kereséshez az "rFunc UDF Library" DateToStr függvényét ajánlom:

    where Cast(DateToStr(ENDTIME ,'%d') as Integer) = 10
    (szűrés tizedikére)
    Mutasd a teljes hozzászólást!
  • Két dátum között így szoktam lekérdezni, ha timestamp típust használok:

    DM.LekerdezQuery1.Close;
    DM.LekerdezQuery1.SQL.Clear;
    DM.LekerdezQuery1.SQL.Add(DM.LekerdezesSZELEKT.AsString);
    DM.LekerdezQuery1.ParamByName('Datumtol').AsDateTime:=Trunc(DateTimePicker1.DateTime);
    DM.LekerdezQuery1.ParamByName('Datumig').AsDateTime:=Trunc(DateTimePicker2.DateTime)+1;
    DM.LekerdezQuery1.Open;

    Üres eredmény más esetben mint írtad azért van, mert a szerencsétlen a pontos dátum és időt veszi, így sosem lesz olyan
    rekord, ami ebbe bele illene! Ha a mai napot akarnád lekérdezni, akkor :

    DM.LekerdezQuery1.Close;
    DM.LekerdezQuery1.SQL.Clear;
    DM.LekerdezQuery1.SQL.Add(DM.LekerdezesSZELEKT.AsString);
    DM.LekerdezQuery1.ParamByName('Datumtol').AsDateTime:=Trunc(now);
    DM.LekerdezQuery1.ParamByName('Datumig').AsDateTime:=Trunc(now)+1;
    DM.LekerdezQuery1.Open;

    Ha pontos idő is kell, akkor bár nem próbáltam ki:

    DM.LekerdezQuery1.Close;
    DM.LekerdezQuery1.SQL.Clear;
    DM.LekerdezQuery1.SQL.Add(DM.LekerdezesSZELEKT.AsString);
    DM.LekerdezQuery1.ParamByName('Datumtol').AsDateTime:=Trunc(now)+strtotime('10:00');
    DM.LekerdezQuery1.ParamByName('Datumig').AsDateTime:=(Trunc(now)+1)+strtotime('16:00');
    DM.LekerdezQuery1.Open;
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd