Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Porównaj daty w T-SQL, ignorując część czasu

Najbardziej rozsądnym sposobem, aby to zrobić, jest usunięcie części czasu z wartości daty i czasu i porównanie wyników, a najlepszym sposobem na usunięcie części czasu z wartości daty i czasu jest:

cast(current_timestamp as date)    

Kiedyś używałem i zalecałem proces, który wyglądał jak jedna z następujących dwóch linii:

cast(floor(cast(getdate() as float)) as datetime)
dateadd(dd,0, datediff(dd,0, getDate()))

Ale teraz, gdy SQL Server ma Date typ, który nie zawiera składnika czasu, nie ma powodu, aby używać którejkolwiek z tych technik.

Jeszcze jedną rzeczą, o której należy pamiętać, jest to, że nadal spowoduje to zablokowanie zapytania, jeśli musisz to zrobić dla dwóch wartości daty i godziny dla każdego wiersza w klauzuli WHERE lub warunku sprzężenia. Jeśli to możliwe, chcesz to jakoś rozłożyć na czynniki, aby było to wstępnie obliczone w jak największym stopniu, na przykład za pomocą widoku lub kolumny obliczeniowej.

Na koniec zwróć uwagę, że funkcja DATEDIFF porównuje liczbę przekroczonych granic. Oznacza to datediff w dniach między '2009-09-14 11:59:59' i '2009-09-15 00:00:01' wynosi 1, mimo że upłynęły tylko 2 sekundy, ale DATEDIFF w dniach między '2009-09-15 00:00:01' i '2009-09-15 11:59:59' nadal wynosi zero, mimo że upłynęło 86 398 sekund. Tak naprawdę nie obchodzi go tam część czasu, tylko granice. W zależności od tego, co próbuje zrobić Twoje zapytanie, możesz to wykorzystać na swoją korzyść.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. składnia pojedynczego wiersza MERGE / upsert w SQL Server

  2. Dlaczego i kiedy powinienem używać SPARSE COLUMN? (SERWER SQL 2008)

  3. Podsłuchiwanie parametrów (lub fałszowanie) w SQL Server

  4. Przeanalizuj nazwę pliku i ścieżkę z pełnej ścieżki

  5. 11 najlepszych praktyk dotyczących indeksowania SQL Server w celu poprawy wydajności dostrajania