Mam procedurę składowaną T-SQL, w której chcę wyszukać określoną wartość i opcjonalnie ograniczyć wyszukiwanie do określonych dat, jeśli są one przekazywane. Jeśli wartości null są przekazane w którejkolwiek z tych dat, to chcę je zignorować. Sposób, w jaki myślę o tym, ustawiając daty wejściowe na minimum lub maksimum, jeśli są one zerowe. Wolałbym jednak, aby nie kodować wartości minimalnej i maksymalnej. Więc zastanawiam się, co to jest odpowiednik SQL C# DateTime.MaxValue
i DateTime.MinValue
.Wyszukiwanie SQL dla daty między wartościami lub Min/Max jeśli NULL
mam na myśli używając zlewają jak tak
SELECT EmployeeName FROM Employee
WHERE EmployeeID = @EmployeeId AND
Birthday BETWEEN Coalesce(@StartDate, <MinDateTime>) AND
Coalesce(@EndDate, <MaxDateTime>)
Czy jest wbudowany w funkcji/stałej/zmiennej/enum mogę wykorzystać dla <MinDateTime>
i <MaxDateTime>
zmiennych?
Wszelkie sugestie?
Bardzo interesujące. Nigdy wcześniej nie widziałem schematu Coalesce (@StartDate, Urodziny). Myślę, że utworzenie zmiennej o nazwie maxdate i mindate oraz ustawienie jej wartości na stałe daty może być dużo bardziej czytelne. Ale tak, główną informacją, której szukałem, był brak wyliczeń/stałych w sztuczce SQL – Chaitanya
Re COALESCE - +1 do stwierdzenia, że nie byłby skalowalny dla dużych tabel, SQL Server nie wydaje się być w stanie używać indeksu w kolumnie Urodziny. Twarde kodowanie min i maks. Terminów działa dobrze z indeksem. –