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

Uzyskaj daty z numeru tygodnia w T-SQL

Odpowiedź Quassnoia działa, ale w pewnym sensie pozostawia cię w ryzach za sprzątanie dat, jeśli są to daty w środku dnia (jego początek tygodnia pozostawia cię o jeden dzień wcześniej niż trzeba, jeśli używasz czasu w środku dnia -- możesz przetestować za pomocą GETDATE()).

W przeszłości używałem czegoś takiego:

SELECT 
   CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL), DATECOL)), 101),
   CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL) - 6, DATECOL)), 101)

Dodatkową korzyścią z tego jest to, że używając @@DATEFIRST możesz obsługiwać niestandardowe dni rozpoczęcia tygodnia (domyślnie jest to niedziela, ale za pomocą SET @@DATEFIRST możesz to zmienić).

Wydaje się szalone, że prosta manipulacja datami w SQL Server musi być tak tajemnicza, ale proszę bardzo...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016:Ulepszenia grupy dostępności

  2. Jak otworzyć plik SDF (SQL Server Compact Edition)?

  3. WHERE IS NULL, IS NOT NULL lub NO WHERE w zależności od wartości parametru SQL Server

  4. Co oznacza =*?

  5. Jakie są ograniczenia programu SQL Server Compact? (Lub - jak wybrać bazę danych do użycia na platformach MS?)