select wg kolumn DATA CZAS

select wg kolumn DATA CZAS
ME
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
0

witam,
miałbym prośbę o podpowiedź jak zoptymalizować zapytanie do bazy SQL
mam tabelę z kolumnami DATA (yyyy-MM-dd) i CZAS (HH:mm:ss)

chcę pobrać rekordy z pewnego przedziału czasowego (2010-10-10 10:00:00 do 2010-10-15 10:00:00)
stworzyłem zapytanie które działa jednak na pewno istnieje jakieś lepsze rozwiązanie

WHERE (DATA>2010-10-10 AND DATA<2010-10-15) OR (DATA=2010-10-10 AND GODZINA>10:00:00)
OR (DATA=2010-10-15 AND GODZINA<10:00:00)

dodam że wartości do zapytania muszę pobierać z DateTimePicker
proszę o jakąś optymalizację
z góry dziękuję

Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
0

data i czas powinny być w jednej kolumnie

  • Rejestracja: dni
  • Ostatnio: dni
0

to, że powinny to nie wątpię ale taką bazę mam do dyspozycji

Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
0

jaki SZBD?
aby to rozsądnie działało to powinieneś zrobić warunek mniej więcej tak

Kopiuj
WHERE pole_data + pole_czas BETWEEN 2010-10-10 10:00:00 AND 2010-10-15 10:00:00

tylko najpierw pole z czasem trzeba zamienić na pole typu timestamp (czy podobne) a jak to zrobić to trzeba wiedzieć jaki SZBD. Aby to działało jako tako (czyt. używało indeksu) to baza musi umieć zakładać indeksy funkcyjne.

Możesz też spróbować założyć indeks tylko na polu z datą i zrobić warunek mniej więcej tak

Kopiuj
(data = 2010-10-10 AND czas >= 10:00:00 OR data > 2010-10-10) AND (data = 2010-10-15 AND czas <= 10:00:00 OR data < 2010-10-15)

Twoje zapytanie nie zwróci Ci tego co oczekujesz (jeśli oczekujesz wyniku, który jest przedziałem czasowym z uwzględnieniem daty i czasu)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.