gpt4 book ai didi

SQL 从“年”和“季度”创建日期时间值

转载 作者:行者123 更新时间:2023-12-02 21:47:37 26 4
gpt4 key购买 nike

我知道与计划相关的里程碑的年份和季度(例如“2010”和“4”),并且我想从中选择/创建一个日期时间。有许多巧妙的方法可以用特定日期的格式(“qq”)来识别季度,但不能反过来(或者有吗?)。这是使用 t-sql/SQL Server。

注意:日期时间应为该季度的最后天。

更新:这是我最终使用 gbn 提供的解决方案,使用 AaronLS 的变量名称,然后根据 Frank Kalis 的建议进行缩短和优化:-) 测试所有 4 个季度的结果非常重要确保年份处理得当。感谢所有回答的人!

DECLARE @TheQuarter INT
DECLARE @theYear INT
-- Note: qq = q = quarter for the datepart
SET @TheQuarter = 1
SET @TheYear = 2011
SELECT DATEADD(YEAR, @TheYear-1900, DATEADD(qq, @TheQuarter, -1))
-- 2011-03-31 00:00:00.000

SET @TheQuarter = 2
SET @TheYear = 2011
SELECT DATEADD(YEAR, @TheYear-1900, DATEADD(qq, @TheQuarter, -1))
-- 2011-06-30 00:00:00.000

SET @TheQuarter = 3
SET @TheYear = 2011
SELECT DATEADD(YEAR, @TheYear-1900, DATEADD(qq, @TheQuarter, -1))
-- 2011-09-30 00:00:00.000

SET @TheQuarter = 4
SET @TheYear = 2011
SELECT DATEADD(YEAR, @TheYear-1900, DATEADD(qq, @TheQuarter, -1))
-- 2011-12-31 00:00:00.000

以下是一些从日期获取季度的问题,但反之则不然: Calculate the Last Day in the CURRENT quarter ; Calculate the last day of the quarter ; Best way to store quarter and year in SQL Server?

最佳答案

永远不要使用字符串进行日期时间转换:格式、语言等容易出错。

将其保留为日期时间类型...

Select dateadd(day, -1, 
dateadd(year, @year-1900,
dateadd(quarter, @qq, 0)
)
)

关于SQL 从“年”和“季度”创建日期时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6037755/

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