【发布时间】:2022-01-19 02:54:33
【问题描述】:
有没有办法选择一个月的每一天?例如我有这个日期:2021-12-15,我想得到这个结果:
| Days|
|--------|
| 1|
| 2|
| 3|
| 4|
| 5|
.. 31
【问题讨论】:
-
根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。
标签: sql sql-server tsql
有没有办法选择一个月的每一天?例如我有这个日期:2021-12-15,我想得到这个结果:
| Days|
|--------|
| 1|
| 2|
| 3|
| 4|
| 5|
.. 31
【问题讨论】:
标签: sql sql-server tsql
您可以使用简单的递归 CTE 来生成给定日期内的数字列表和 eomonth():
declare @date date='20211215';
with d as (
select 1 num
union all
select d.num + 1
from d
where d.num <= 31
)
select num as [Days]
from d
where num<=Day(EOMonth(@date));
【讨论】:
GENERATE_SERIES() 似乎是 Postgres 特有的。
为了完整起见,有一个更简单的方法。
来自系统表的直接SELECT ...。
SQL
DECLARE @date DATE ='2021-12-15';
SELECT DISTINCT number AS [Days]
FROM master..spt_values
WHERE number BETWEEN 1 AND DAY(EOMonth(@date));
【讨论】: