Mam tabelę o nazwie, Product_Sales
która zawiera takie dane
Product_ID | Sold_by | Qty | From_date | To_date
-----------+---------+-----+------------+-----------
3 | 12 | 7 | 2013-01-05 | 2013-01-07
6 | 22 | 14 | 2013-01-06 | 2013-01-10
8 | 11 | 9 | 2013-02-05 | 2013-02-11
Jakie jest zapytanie, jeśli chcę wybrać dane sprzedaży między dwiema datami z zakresu dat?
Na przykład chcę wybrać dane dotyczące sprzedaży od 2013-01-03
do 2013-01-09
.
Odpowiedzi:
Jak widać, istnieją dwa sposoby na załatwienie sprawy:
Oczywiście drugi sposób jest znacznie prostszy (tylko dwa przypadki przeciwko czterem).
Twój SQL będzie wyglądał następująco:
źródło
WHERE NOT
warunku, odwrócenie operatorów i dodanie równego sobie również działa:SELECT * FROM Product_sales WHERE From_date <= @RangeTill OR To_date >= @RangeFrom
Musisz uwzględnić wszystkie możliwości. From_Date lub To_Date mogą znajdować się w zakresie dat lub daty rejestracji mogą obejmować cały zakres.
Jeśli jedna z dat
From_date
lubTo_date
znajduje się między datami lubFrom_date
jest wcześniejsza niż data rozpoczęcia iTo_date
większa niż data zakończenia; następnie należy zwrócić ten wiersz.źródło
Spróbuj wykonać następujące zapytanie, aby uzyskać daty z zakresu:
źródło
start_date
ale zakończyła się międzystart_date
aend_date
. Z drugiej strony, pytanie nie jest wystarczająco jasne, myślę, że nie mamy pojęcia, czy powinniśmy przyjmować sprzedaż, która jest ściśle między podanymi datami, czy datami, które częściowo obejmują zakres dat, ale mogą rozciągać się po jednej lub drugiej stronie lub obu? Tak więc podstawowy problem polega na tym, że wydaje mi się, że pytanie nie jest jasne.źródło
Obejmuje wszystkie warunki, których szukasz.
źródło
źródło
Proszę spróbować:
źródło
Tylko moje 2 centy, uważam, że używanie formatu „dd-MMM-yyyy” jest najbezpieczniejsze, ponieważ serwer db będzie wiedział, czego chcesz, niezależnie od ustawień regionalnych na serwerze. W przeciwnym razie możesz potencjalnie napotkać problemy na serwerze, który ma ustawienia regionalne z datą rrrr-dd-mm (z dowolnego powodu)
A zatem:
Zawsze mi się to udało ;-)
źródło
To działa na SQL_Server_2008 R2
źródło
źródło
To zapytanie pomoże ci:
źródło
źródło
Sprawdź to zapytanie, utworzyłem to zapytanie, aby sprawdzić, czy data zameldowania pokrywa się z jakimikolwiek datami rezerwacji
spowoduje to ponowne wykonanie nakładających się szczegółów, aby uzyskać nienakładające się szczegóły, a następnie usunąć „NIE” z zapytania
źródło
Możesz także spróbować użyć następujących fragmentów:
źródło
To proste. Użyj tego zapytania, aby znaleźć wybrane dane z zakresu dat między dwiema datami
źródło
Powinieneś porównywać daty w sql, tak jak porównujesz wartości liczbowe,
źródło
Oto zapytanie, które pozwala znaleźć wszystkie sprzedaże produktów w sierpniu
Dodaje również instrukcję case, aby zweryfikować zapytanie
źródło
źródło
to proste, użyj tego zapytania, aby znaleźć to, czego szukasz.
źródło