sql >> Database teknologi >  >> RDS >> Sqlserver

Opdel datointerval til år-måned rækker på SQL Server 2005

Her er en metode, der bruger rekursive CTE'er:

with CTE as (
      select id, dateStart as dte, dateEnd
      from t
      union all
      select id, dateadd(month, 1, dte), dateEnd
      from CTE
      where dateadd(month, 1, dte) < dateEnd
     )
select id, dte
from CTE;

Du kan konvertere det endelige resultat til ethvert format, du kan lide. For eksempel:

select id, year(dte) * 10000 + month(dte) as yyyymm_int

eller

select id, cast(year(dte) * 10000 + month(dte) as varchar(255)) as yyyymm


  1. Lav flere sider ud af en mysql-forespørgsel

  2. Oprettelse af funktioner i phpMyAdmin - Fejl:adgang nægtet, du har brug for superprivilegiet til denne handling

  3. PDO + MySQL returnerer altid strenge, men hvad med MsSQL?

  4. postgreSQL fejl initdb:kommando ikke fundet