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 Databases