Witam mam problem gdyż nie wiem jak powinienem przechowywać czas w swojej bazie. Data jest mi kompletnie niepotrzebna więc może da się to jakoś zrobić bez daty. W internecie pisza o różnych sposobach np. dodawanie aktualnej daty lub jakiejs konkretnej we wszystkich rekordach i wydobywaniu później samego czasu. Z góry dzięki za pomoc
cinek181992 napisał(a):
Witam mam problem gdyż nie wiem jak powinienem przechowywać czas w swojej bazie. Data jest mi kompletnie niepotrzebna więc może da się to jakoś zrobić bez daty. W internecie pisza o różnych sposobach np. dodawanie aktualnej daty lub jakiejs konkretnej we wszystkich rekordach i wydobywaniu później samego czasu. Z góry dzięki za pomoc
Co to znaczy "przechowywać czas" w bazie danych? Chcesz przechowywać okres czasu np. 35 minut? Jeśli tak, to przyjrzyj się typom danych INTERVAL (np. http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements001.htm#SQLRF0021)
Jeśli przez "przechowywani czasu" rozumiesz coś innego, to doprecyzuj o co chodzi.
tak, chodzi o np 18:38. Mam rozkład jazdy autobusów i mi nie jest potrzebna data
cinek181992 napisał(a):
tak, chodzi o np 18:38. Mam rozkład jazdy autobusów i mi nie jest potrzebna data
W takim przypadku VARCHAR2(5) nie wystarczy? ;-) Albo liczba minut od północy? Albo INTERVAL DAY (0) TO SECOND(0) ?
To w jaki sposób przechowasz będzie skutkowało różnymi sposobami konwersji/porównywania/weryfikacji poprawności danej wartości.
Co chcesz robić z tą wartością (pomijając przechowywanie)?
A może po prostu jako DATE i prosta konwersja?
select to_date('1970-01-01 23:59:00','YYYY-MM-DD HH24:MI:SS') from dual;
select to_char(sysdate,'HH24:MI') tylkoCzas from dual;
zamiana znacznika [code] na <code> - furious programming
godzina*60 + minuta
Przechowuj jako CHAR(4) - np. 1848 (czyli 18:48).
Będzie można porównywać.
Do wyświetlenia trzeba będzie przeformatować, ale nie marnuje miejsca na dwukropek.
Oczywiście godzina po północy musi być z wiodącymi zerami: "0048".