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

Вземете начална и крайна дата на тримесечия от година

select 
    dateadd(M, 3*number, CONVERT(date, CONVERT(varchar(5),@year)+'-1-1')),
    dateadd(D,-1,dateadd(M, 3*number+3, CONVERT(date, CONVERT(varchar(5),@year)+'-1-1'))),
    Number QuarterNo
from master..spt_values 
where type='p' 
and number between 1 and 4  

Вероятно ще искате да използвате дати, а не дати и часове, в противен случай нищо през деня на последния ден от тримесечието не е включено във вашето тримесечие (напр.:2013-06-30 14:15)

За да отидете в другата посока, използвайте datepart

select ((DATEPART(q,@date)+2) % 4)+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. Как да използвам DATEDIFF, за да върна година, месец и ден?

  2. Изберете най-горните редове, докато стойността в определена колона се появи два пъти

  3. Грешка на SQL Server:Не може да се изпълни отдалечена процедура

  4. Разлика между различните типове низове в SQL Server?

  5. Как да изброя всички SSIS пакети на Sql Server 2008 с помощта на T-SQL