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

Как да генерирате календарна таблица с начална и крайна дата на месеца

Ако нямате календарна таблица, можете да използвате ad hoc таблица с данни

Пример

Declare @Date1 date = '2018-01-01'
Declare @Date2 date = GetDate()

Select [Month] = D
      ,[Eomonth] = case when EOMONTH(D)>@Date2 then convert(date,GetDate()) else EOMONTH(D) end
 From  (
        Select Top (DateDiff(Month,@Date1,@Date2)+1) 
               D=DateAdd(Month,-1+Row_Number() Over (Order By (Select Null)),@Date1) 
         From  master..spt_values n1
       ) A

Връщане

Month       Eomonth
2018-01-01  2018-01-31
2018-02-01  2018-02-28
2018-03-01  2018-03-31
2018-04-01  2018-04-30
2018-05-01  2018-05-31
2018-06-01  2018-06-30
2018-07-01  2018-07-31
2018-08-01  2018-08-31
2018-09-01  2018-09-30
2018-10-01  2018-10-31
2018-11-01  2018-11-30
2018-12-01  2018-12-31
2019-01-01  2019-01-31
2019-02-01  2019-02-13   <-- Today's date


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете стойности от полето XML в SQL Server 2008

  2. Връщане на всички деактивирани ограничения в SQL Server (пример за T-SQL)

  3. Проблеми с редактиране на запис в Access / SQL (конфликт при запис)

  4. Най-бързият начин за тази заявка (коя е най-добрата стратегия) при даден период от време

  5. Вземете списък с начални и крайни стойности от таблицата с дати и часове