Stránka 1 z 1

[Delphi - SQL]Dotaz na konkrétní datum

Odeslat příspěvekNapsal: 1. 6. 2017 11:24
od dyžon
zdravím,
potřeboval bych prosím poradit se složením SQL dotazu na konkrétní datum v tabulce.
zjednoduším to:
mám tabulku TABLE1 a v ní dva fieldy ID(integer), NAZEV(varchar) a DATUM(date).
v DATUMu jsou data uloženy ve formátu: dd.mm.rrrr a když tam není tak je hodnota null
v cyklu for vždycky složím datum a volám tabulku, jestli toto datum tam je, pokud ano potřebuju hodnotu z fieldu NAZEV

Kód: Vybrat vše
var datum, sql, nazev: String;
    hledanyDatum: TDatetime;
    nasel: Boolean;
...
datum:=  'den'+'.'+'mesic'+'.'+'rok';
sql:= 'SELECT * TABLE1 where [DATUM] = :datum'
//vložím ho do IBQuery1
hledanyDatum:= IBQuery1.Fields[1].AsDateTime;
if hledanyDatum = StrToDateTime(datum) then nasel:= True else nasel:= False;
....
if nasel then nazev:= IBQuery1.Fields[0].AsString;

myslím, že ten zápis sql je špatnej, ale nemůžu přijít na to, jak se na konkrétní datum zeptat.
navíc ta podmínka za tím je taky špatně.
chtěl jsem něco jako
Kód: Vybrat vše
if hledanyDatum isNull then ....
ale to nejde
poradíte prosím ..

Re: [Delphi - SQL]Dotaz na konkrétní datum

Odeslat příspěvekNapsal: 1. 6. 2017 12:29
od petr.kejval
V SQL tabulce v poli DATUM(date) jsou datumy uloženy jako typ (date) a ne jako typ (string )ve formátu dd.mm.rrrr, tak je pouze v nějakém prohlížeči vidíš. Proto :datum musí být také typu (date) a ne (string).

V MS SQL Serveru by se použilo SELECT * FROM TABLE1 where [DATUM] = CONVERT(varchar(10),datum, 104), kde datum je např. '31.7.2017'.

Re: [Delphi - SQL]Dotaz na konkrétní datum

Odeslat příspěvekNapsal: 1. 6. 2017 12:46
od dyžon
díky
doma to vyzkouším ...
s tímhle jsem se setkal, ale nevěděl jsem co znamená to číslo za proměnnou.
většinou jsem tam viděl 101, ty máš 104
znamená to typ konverze ??

Re: [Delphi - SQL]Dotaz na konkrétní datum

Odeslat příspěvekNapsal: 1. 6. 2017 13:02
od mracka michal

Re: [Delphi - SQL]Dotaz na konkrétní datum

Odeslat příspěvekNapsal: 1. 6. 2017 13:24
od dyžon
díky, mrknu ...