Mar*_*k A 5 sql t-sql sql-server
我知道与计划相关的里程碑的年份和季度(例如"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
Run Code Online (Sandbox Code Playgroud)
以下是从日期开始获取季度的几个问题,但不是相反: 计算当前季度的最后一天 ; 计算该季度的最后一天 ; 在SQL Server中存储季度和年份的最佳方法?
永远不要使用字符串进行日期转换:格式,语言等方面的错误太多了.
将其保留在日期时间类型中......
Select dateadd(day, -1,
dateadd(year, @year-1900,
dateadd(quarter, @qq, 0)
)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7248 次 |
| 最近记录: |