Mam pytanie, na które nie jestem pewny, jeśli to możliwe lub nie, ale powiedzmy, że mam tabelę z Employeeid, Date i AttendanceStatus, tj. "Present" / "Absent".
Mogę uzyskać status wszystkich pracowników dla wszystkichdaty lub daty określone w zapytaniu. Moje pytanie jest takie, że domyślnie można uzyskać datę dzisiejszą, więc za każdym razem, gdy uruchomię zapytanie, otrzymuję wiersze danych dla dzisiejszych zamiast wszystkich rekordów z bazy danych. Chcę używać domyślnych ustawień, aby nie musieć codziennie zmieniać daty. Z góry dziękuję
Odpowiedzi:
2 dla odpowiedzi № 1Spróbuj tego:
select * from TABLE_NAME where
where cast([Date] as date) = cast(getdate() as date)
Ponadto, jak już wspomniano, można utworzyć widok:
create view V_TABLE_NAME as
select * from TABLE_NAME where
where cast([Date] as date) = cast(getdate() as date)
1 dla odpowiedzi nr 2
Możesz zastosować klauzulę where dla bieżącego dnia;
select * from table where
Date > cast(getdate() as date) and
Date < DATEADD(day,1,cast(getdate() as date))
Lub możesz utworzyć widok;
create view v_table
as
select * from table where
Date > cast(getdate() as date) and
Date < dateadd(day,1,cast(getdate() as date))
Następnie zapytanie;
select * from v_table
0 dla odpowiedzi № 3
Wypróbuj tę logikę
DECLARE @MyDate DATE
SELECT
*
FROM YourTable
WHERE DateField = ISNULL(@MyDate,GETDATE())
Tutaj, jeśli nie przekazujesz żadnych wartości w parametrze @MyDate, to Bieżąca data będzie domyślna. Można również użyć poniższych
DECLARE @MyDate DATE
SELECT
*
FROM YourTable
WHERE
DateField = CASE WHEN ISDATE(@MyDate) = 1 THEN @MyDate ELSE GETDATE() END