Dni pomiędzy datami

Odpowiedz Nowy wątek
2018-11-21 12:20
0

Witam,

Mam tabelę z danymi
screenshot-20181121120915.png

Jak napisać zapytanie , które dla wierszy z etykietą "nieobecność" wyświetli wszystkie daty z zakresu od-do w przypadku kiedy data_od <> data_do?

Pozostało 580 znaków

2018-11-21 12:27
0

W MSSQL jest coś takiego

SELECT DATEDIFF(day, @data_od, @data_do);

Pozostało 580 znaków

2018-11-21 13:20
0

Ale funkcja DATEDIFF wyświetla tylko liczbę dni pomiędzy datami a mi chodzi o wyświetlenie konkretnych dat zawartych pomiędzy dwoma datami a nie liczby dni.

edytowany 1x, ostatnio: buchu2, 2018-11-21 13:20

Pozostało 580 znaków

2018-11-21 13:20
0

Masz tablice z kalendarzem ? Wtedy to "piece of cake". Jak nie to masz więcej rzeźbienia, patrz topic:

https://stackoverflow.com/que[...]tween-two-dates-in-sql-server

Pozostało 580 znaków

2018-11-21 13:23
0

Chodzi o tabelę z kalendarzem?
Mam tabelę sys_kalendarz_dzien, która ma dane jak poniżej

screenshot-20181121132621.png

edytowany 1x, ostatnio: buchu2, 2018-11-21 13:26
Panczo napisał Ci ostateczne końcowe rozwiązanie. Zwróć tylko uwagę, że BETWEEN bierze też daty z zakresu czyli data_od i data_do będzie też na liście (a nie wiem czy to pożądane u Ciebie czy nie ) - BlackBad 2018-11-21 13:35
Daty data_od i data_do też mają być na liście. Faktycznie napisałem tak jakby ich miało nie być. Rozwiązanie Panczo było by końcowe gdybym w tabeli z obecnościami i nieobecnościami miał też dni wole od pracy. - buchu2 2018-11-21 13:56

Pozostało 580 znaków

2018-11-21 13:26
0

No to jak masz tablice z kalendarzem to zwykły join:

select
   k.data, t.*
from 
    tabela t
    inner join kalendarz k on k.data between t.data_od and t.data_do
where
   t.data_od <> t.data_do
   and etykieta = 'nieobecnosc'

Pozostało 580 znaków

2018-11-21 13:41
0

Dzięki Panczo.
Na razie mam to o co mi chodziło ale jeszcze będę miał pytania w tym temacie bo muszę jeszcze tabelę z wpisami obecność i nieobecność połączyć z sys_kalendzarz_dzien aby mieć wszystkie dni tzn. robocze i wolne w jednym. To jednak później jakbym nie dawał rady.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0