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

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod dyžon 1. 6. 2017 11:24

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 ..
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod petr.kejval 1. 6. 2017 12:29

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'.
petr.kejval
Junior

Odeslat příspěvekod dyžon 1. 6. 2017 12:46

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 ??
Naposledy upravil dyžon dne 1. 6. 2017 13:22, celkově upraveno 1
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

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

„You don't need a reason to help people.”
~Zidane Tribal, Final Fantasy IX
--
Pouzivam suborovy manazer Nomad.Net.
mracka michal
Junior
Uživatelský avatar

Odeslat příspěvekod dyžon 1. 6. 2017 13:24

díky, mrknu ...
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník