sql - sql server中两个日期之间的月份,其中每个日期在sql server中的开始和结束日期

标签 sql sql-server date

我想得到两个日期之间的月份及其开始日期和结束日期。假设如果我输入开始日期为“2017-04-01”和结束日期为“2017-07-31”,我想要月份列表,即四月,五月、六月、七月分别有开始和结束日期。请建议我如何实现。

最佳答案

一种方法是递归 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;

如果你想要月份的名称,那么你可以使用datename(month, som)

关于sql - sql server中两个日期之间的月份,其中每个日期在sql server中的开始和结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45460963/

相关文章:

mysql - 引用表 : all in one or separate table?

php - 陷入更新列值的困境

java - 以毫秒从 JodaTime 获取 ISO8601

Mysql 计数连接表 OneToMany

c# - 用 SQL 列填充 WPF 组合框

sql-server - SQL 2012 bcp 调用返回 SQLState = 28000。NativeError = 18456 用户登录失败

sql - "Lost"SQL服务器数据库

r - 参数化查询不适用于 SQL Server 2017

python - 如何使用python解析包含毫秒的时间字符串?

ios - Swift iOS doesRelativeDateFormatting 除了 "Today"和 "Yesterday"之外还有不同的值吗?