Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Вземете дати от номер на седмица в T-SQL

Отговорът на Quassnoi работи, но някак ви оставя на куката да изчистите датите, ако са дати в средата на деня (неговото начало на седмицата ви оставя един ден по-рано, отколкото трябва да бъдете, ако използвате време в средата на деня -- можете да тествате с помощта на GETDATE()).

Използвах нещо подобно в миналото:

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

Странична полза от това е, че с помощта на @@DATEFIRST можете да обработвате нестандартни начални дни на седмицата (по подразбиране е неделя, но с SET @@DATEFIRST можете да промените това).

Изглежда налудничаво, че простата манипулация на дата в SQL Server трябва да е толкова тайнствена, но ето...



  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 и най-добрите начини за избягването им

  2. SQL Server 2008:как да дам привилегии на потребителско име?

  3. Заменете низ с друг низ в SQL Server (T-SQL)

  4. Алгоритъм за сортиране по GUID на SQL Server. Защо?

  5. SQL LocalDB срещу SQL Server CE