select z hodinovych zaznamu
Jan Serak
sherry na pikebo.cz
Pátek Srpen 11 06:47:40 CEST 2000
Lukas Maly wrote:
> Chtel bych udelt select vsech zaznamu z 17:??:??
>
> select * from table where hodina = 17:??:?? ???
>
> Porovnavat cas se da si nejakou funkci ???
V Oracle je to takto:
relacni operatory funguji tez na typ date (Oracle ma
jeden typ date v nemz je cele datum a cas).
Select vsech zaznamu z nejakeho casu lze provest trojim
zpusobem:
1. mam-li promennou typu date (napr. datum) a hledam v tabulce:
create table tabulka ( k_datu date,...);
mohu bez obav pouzit:
select * from tabulka where k_datu=datum;
2. mam-li casovy udaj v jinem datovem typu (treba char) mohu
konvertovat tento do data:
select * from tabulka where k_datu=to_date('17:18','HH24:MI');
Funkce to_date prevede retezec na date, pricemz od nejvyssi specifikovane
jednotky (v tomto pripade hodina) doplni vyssi podle aktualniho casu
(den, mesic a rok bude dnesni) a nizsi jednotky nulami (pocet sekund bude
0). Tj. tento select vybere pouze ty zaznamy, kde k_datu bude obsahovat
dnesni datum a cas 17:18:00.0000 (a zadny jiny).
3. nejpraktictejsi vsak muze byt konverze data do charu, nebot porovnani
typu date se odehraje s maximalni presnosti, kdezto v tomto pripade
si je uzivatel ridi presne podle sveho. Pak to muze vypadat takto:
select * from tabulka where to_char(k_datu,'HH24:MI')='17:18';
vybere vsechny zaznamy, ktere maji ve sloupci k_datu 17 hodin a 18 minut
v libovolnem dni.
Takze staci si vybrat.
Jan Serak
Další informace o konferenci Test