Temat: Zapytanie z BETWEEN

Witam
Stworzyłem następujące zapytanie "SELECT CDN.TwrKarty.Twr_Kod, CDN.TwrKarty.Twr_Nazwa, CDN.TwrCeny.TwC_TwrLp, CDN.TwrCeny.TwC_Wartosc, DATEADD(S, CDN.TwrCeny.TwC_CzasModyfikacji, '19900101') AS Czas_mod
FROM CDN.TwrKarty INNER JOIN
CDN.TwrCeny ON CDN.TwrKarty.Twr_GIDNumer = CDN.TwrCeny.TwC_TwrNumer
WHERE (CDN.TwrCeny.TwC_TwrLp = 5) AND (CDN.TwrCeny.TwC_Wartosc > 0) AND (DATEADD(second, CDN.TwrCeny.TwC_CzasModyfikacji, CONVERT(DATETIME, '19900101')) BETWEEN @dataOd AND @dataDo)"

Chciałem uzyskać informację, kiedy w dodanym cenniku na karcie towarowej była ostatnia modyfikacja. Zapytanie zwraca mi wynik tyle ze po dodaniu zakresu daty (np.01.06.22-03.06.22) zwraca mi tylko dane z 01.06.22-02.06.22 (brakuje 03.06.22). Czy mógłbym prosić o jakąś podpowiedź gdzie ewentualnie jest błąd albo czego brakuje w tym zapytaniu???
Z góry dziękuje
Krzysztof Wojtal

Krzysztof Wojtal Specjalista ds
systemu ERP, PL/SQL,
Crystal rep., Power
B...

Temat: Zapytanie z BETWEEN

Cześć,

Problem jest w tym, że datę jaką dostajesz z systemu, to jest data i czas (YYYY-MM-DD HH24:MI:SS). Musisz sobie zrobić formatowanie tylko do daty np zamiast 2022-06-03 13:45:12 na 2022-06-03 00:00:00.
Nie wiem, czy na bazie Microsoftowej jest ta funkcja, która zmieni Ci format daty, ale spróbuj - DATE(data_z_bazy, 'yyyy-MM-dd') lub TRUNC(data_z_bazy).

Pozdrawiam
Krzysiek
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Zapytanie z BETWEEN

Możesz skorzystać z funkcji CAST() i zrzutować na typ date. Funkcja obetnie ci czas.

Na przykład:

DECLARE @Date datetime = '04/01/2016 12:01:31'
SELECT CAST(@Date as date)


W twoim przypadku (bez testowania) powinno to wyglądać mniej więcej tak:

SELECT CDN.TwrKarty.Twr_Kod, CDN.TwrKarty.Twr_Nazwa, CDN.TwrCeny.TwC_TwrLp, CDN.TwrCeny.TwC_Wartosc, DATEADD(S, CDN.TwrCeny.TwC_CzasModyfikacji, '19900101') AS Czas_mod
FROM CDN.TwrKarty INNER JOIN
CDN.TwrCeny ON CDN.TwrKarty.Twr_GIDNumer = CDN.TwrCeny.TwC_TwrNumer
WHERE (CDN.TwrCeny.TwC_TwrLp = 5) AND (CDN.TwrCeny.TwC_Wartosc > 0) AND CAST(
(DATEADD(second, CDN.TwrCeny.TwC_CzasModyfikacji, CONVERT(DATETIME, '19900101')), as date) BETWEEN CAST(@dataOd as date) AND CAST(@dataDo as date)"

Następna dyskusja:

Raport CR 8.5, brak pliku q...




Wyślij zaproszenie do