gpt4 book ai didi

sql - 在 SQL Server 中计算给定时间段的月份的最后几天

转载 作者:行者123 更新时间:2023-12-02 03:39:48 25 4
gpt4 key购买 nike

是否可以在 SQL 中执行:例如,我有期间 where @s_date = '20130101' and @e_date = '20130601' 我想选择该期间月份的所有最后几天.

这是结果的例子:

20130131
20130228
20130331
20130430
20130531

谢谢。

最佳答案

最简单的选择是拥有一个 calendar table ,带有月份标记的最后一天,因此您的查询将简单地为:

SELECT  *
FROM dbo.Calendar
WHERE Date >= @StartDate
AND Date <= @EndDate
AND EndOfMonth = 1;

当然假设您没有日历表,您可以动态生成日期列表:'

DECLARE @s_date DATE = '20130101',
@e_date DATE = '20130601';

SELECT Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY Object_ID) - 1, @s_date)
FROM sys.all_objects;

然后,一旦你有了日期,你就可以将日期限制在该月的最后一天(添加一天使其成为该月的第一天):

DECLARE @s_date DATE = '20130101',
@e_date DATE = '20130601';

WITH Dates AS
( SELECT Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY Object_ID) - 1, @s_date)
FROM sys.all_objects
)
SELECT *
FROM Dates
WHERE Date <= @e_Date
AND DATEPART(DAY, DATEADD(DAY, 1, Date)) = 1;

Example on SQL Fiddle

关于sql - 在 SQL Server 中计算给定时间段的月份的最后几天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20757884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com