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

miesięcy między dwiema datami na serwerze sql z datą rozpoczęcia i zakończenia każdej z nich na serwerze sql

Jedną z metod jest rekurencyjne CTE:

with cte as (
      select dateadd(day, 1 - day(@startdate), @startdate) as som,
             eomonth(@startdate) as eom
      union all
      select dateadd(month, 1, som), eomonth(dateadd(month, 1, som))
      from cte
      where dateadd(month, 1, som) < @enddate
     )
select *
from cte;

Jeśli chcesz nazwę miesiąca, możesz użyć datename(month, som) .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podłączanie Pythona 3.3 do serwera microsoft sql 2008

  2. Procedura składowana — zwraca tożsamość jako parametr wyjściowy lub skalar

  3. SQL Server IF a IIF():jaka jest różnica?

  4. Zapytanie SQL rozróżniające ß i ss

  5. Przewodnik po CTE w SQL Server