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

Как да получите номера на седмицата на месеца от датата в sql сървър 2008

Ето 2 различни начина, като и двата предполагат, че седмицата започва в понеделник

Ако искате седмиците да са цели, така че да принадлежат към месеца, в който започват:Така че събота 2012-09-01 и неделя 2012-09-02 е седмица 4, а понеделник 2012-09-03 е седмица 1, използвайте това:

declare @date datetime = '2012-09-01'
select datepart(day, datediff(day, 0, @date)/7 * 7)/7 + 1

Ако вашите седмици се съкращават при промяна на месеца, така че събота 2012-09-01 и неделя 2012-09-02 е седмица 1, а понеделник 2012-09-03 е седмица 2, използвайте това:

declare @date datetime = '2012-09-01'
select datediff(week, dateadd(week, 
  datediff(day,0,dateadd(month,
    datediff(month,0,@date),0))/7, 0),@date-1) + 1

Получих имейл от Джералд. Той посочи недостатък на втория метод. Това трябва да бъде поправено сега



  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 2008 няма да бъде съкратен

  2. Добавяне на намек за заявка при извикване на функция с таблична стойност

  3. Как да получите експортиран изход в реален CSV формат в SQL Server Management Studio?

  4. Как да коригирате грешката „функцията datediff доведе до преливане“ в SQL Server

  5. Инсталиране на екземпляр на клъстер за отказване на SQL Server – част 1