ďťż
 
oracle a format daty ďťż
 
oracle a format daty
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

oracle a format daty



marek - 09-09-2006 01:04
oracle a format daty
  Witam !
od niedawna pracuje z baza danych oracle.
Mam dwie tabele w ktorych sa kolumny typu DATE.
po selekcie z tabeli pierwszej otrzymuję date w formacie
2005-11-15 16:23:57
natomiast po selekcie z tabeli numer dwa otrzymuje date w formacie
2005-11-15
Jak to mozliwe skoro oba pola sa typu data?
Dodatkowo z tabeli numer dwa kiedy napisze

select * from tabela2 where date = '2005-11-15'
normalnie dostaje wynik z rekodami pasujacymi z tabeli.

Natomiast jesli to samo zapytanie skieruje do tabeli pierwszej

select * from tabela1 where date = '2005-11-15'

nie otrzymuje nic nawet bledu, czyli jakby nie bylo rekordow pasujacych
(oczywiscie rekordy sa). A naprzyklad zapytanie typu

select * from tabela1 where date <= '2005-11-15'

dziala poprawnie.

Probowalem juz rozne formaty typu
= '2005-11-15 12:00:00'
i inne mozliwosci i nic w tym przypadku nie dziala.

Jak uporac sie z formatem '2005-11-15 16:23:57' tak aby po zapytaniu
otrzymac 1 dzien?
Zastosowalem between i sie udalo ale to nie jest chyba wlasciwe .

Pozdrawiam

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/





Dominika - 09-09-2006 01:04

  Zawsze mozesz uzyc trunc(data), zwroci Ci sam dzien bez godziny. Nie
wiem co dokladnie chcesz osiagnac, ale jesli chodzi o wybranie rekordow
z ta sama data dzienna, to pomoze.
--
Dominika




Sławomir Szyszło - 09-09-2006 01:05

  Dnia Mon, 28 Aug 2006 13:34:37 +0000 (UTC), "marek "
<marekpracz@WYTNIJ.gazeta.pl> wklepał(-a):

>Witam !
>od niedawna pracuje z baza danych oracle.
>Mam dwie tabele w ktorych sa kolumny typu DATE.
>po selekcie z tabeli pierwszej otrzymuję date w formacie
>2005-11-15 16:23:57
>natomiast po selekcie z tabeli numer dwa otrzymuje date w formacie
>2005-11-15
>Jak to mozliwe skoro oba pola sa typu data?

Pole typu date w Oracle zawiera datę i godzinę. Przechowywane są zawsze oba te
elementy. Natomiast jeśli wprowadzono datę 2005-11-15 00:00:00, to większość
programów pokazuje to jako 2005-11-15. Taki sposób jest zalecany, gdy dokładna
godzina nie jest istotna, a jedynie dzień. Znacznie to upraszcza konstruowanie
zapytań i jest wydajniejsze (patrz niżej).

W ogólności warunek
data = '2005-11-15'
jest równoznaczny z data = '2005-11-15 00:00:00'

>Jak uporac sie z formatem '2005-11-15 16:23:57' tak aby po zapytaniu
>otrzymac 1 dzien?
>Zastosowalem between i sie udalo ale to nie jest chyba wlasciwe .

Jeśli tworzysz aplikację, to zdecyduj czy w danym polu potrzebujesz dokładną
godzinę. Jeśli nie, to zerujesz ją przy wstawianiu/aktualizacji rekordu i dzięki
temu zapytanie typu:
select * from tabela2 where data = '2005-11-15';
zwróci ci rekordy.

Natomiast jeśli przechowujesz dokładną godzinę to są różne sposoby:
a) where trunc(data) = '2005-11-15'

b) where to_char(data, 'yyyy-mm-dd') = '2005-11-15'

c) where data between to_date('2005-11-15 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
and to_date('2005-11-15 23:59:59', 'yyyy-mm-dd hh24:mi:ss')

Z tym, że jeśli dokonujesz konwersji to_char, trunc na kolumnie typu date, to
ewentualny indeks na tym polu nie zostanie użyty. Musiałbyś mieć indeks
funkcyjny zgodny z wyrażeniem, którego używasz w WHERE.
--
Sławomir Szyszło mailto:slaszysz@poczta.onet.pl
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?grou...mp.bazy-danych
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= Oracle 19g +Insert +Insert +Insert... [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?= =?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= [oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?= MSSQL Express czy Oracle Express =?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?= =?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • shanti.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com