Tsql 如何查找给定季度日期的季度末
如果给我一个日期(比如@d='11-25-2010'),我如何从该日期确定季度末。我想在午夜前一秒使用时间戳 我可以得到这个:Tsql 如何查找给定季度日期的季度末,tsql,sql-server-2008,Tsql,Sql Server 2008,如果给我一个日期(比如@d='11-25-2010'),我如何从该日期确定季度末。我想在午夜前一秒使用时间戳 我可以得到这个: select dateadd(qq, datediff(qq, 0, getdate()), 0) as quarterStart 这给了我:“10-1-2010” 我在某一天的午夜前用它一秒钟: select DateAdd(second, -1, DateAdd(day, DateDiff(day, 0, @d))+1, 0) ) AS DayEnd 最后,四分
select dateadd(qq, datediff(qq, 0, getdate()), 0) as quarterStart
这给了我:“10-1-2010”
我在某一天的午夜前用它一秒钟:
select DateAdd(second, -1, DateAdd(day, DateDiff(day, 0, @d))+1, 0) ) AS DayEnd
最后,四分之一法会给我“12-31-2010 23:59:00”我想我明白了:
select DateAdd(second, -1, DateAdd(qq, DateDiff(qq, 0, getdatE())+1, 0) )
我想我明白了:
select DateAdd(second, -1, DateAdd(qq, DateDiff(qq, 0, getdatE())+1, 0) )
试试这个
select dateadd(second,-1,
dateadd(month,3,
dateadd(qq, datediff( quarter , 0 , current_timestamp ) ,
0
)
)
)
试试这个
select dateadd(second,-1,
dateadd(month,3,
dateadd(qq, datediff( quarter , 0 , current_timestamp ) ,
0
)
)
)
只需找到下一季度的第一天,减去一天。如果您将此值用于某个范围,则使用“严格小于”,并且不要减去一天:
MyDate >= Dateadd(qq, datediff(qq, 0, getdate()), 0)
And MyDate < DateAdd(qq, 1
, dateadd(qq, datediff(qq, 0, getdate()), 0))
MyDate>=Dateadd(qq,datediff(qq,0,getdate()),0)
和MyDate
只需找到下一季度的第一天,减去一天。如果您将此值用于某个范围,则使用“严格小于”,并且不要减去一天:
MyDate >= Dateadd(qq, datediff(qq, 0, getdate()), 0)
And MyDate < DateAdd(qq, 1
, dateadd(qq, datediff(qq, 0, getdate()), 0))
MyDate>=Dateadd(qq,datediff(qq,0,getdate()),0)
和MyDate
为了清晰起见,非常详细。基本上,这是一种直接方法:
- 获得年份
- 考虑到季度中有3个月,计算季度月份
- 调整第四季度的年度
- 编译输出
declare @current datetime
set @current = '9-25-2010'
declare @year int
set @year = datepart(year, @current)
declare @quartermonth int
select @quartermonth = ((datepart(month, @current) - 1)/ 3 + 1)* 3 + 1 -- go to the next month
select @year, @quartermonth
-- adjust year if it's 4th quater
select @year = @year + @quartermonth / 12
-- avoid month overflow
select @quartermonth = @quartermonth % 12
select @year, @quartermonth
declare @firstdayofnextquater datetime
select @firstdayofnextquater = convert(datetime, convert(varchar, @year) + '-' + convert(varchar, @quartermonth) + '-01')
select dateadd(second, -1, @firstdayofnextquater)
为了清楚起见,非常冗长。基本上,这是一种直接方法:
- 获得年份
- 考虑到季度中有3个月,计算季度月份
- 调整第四季度的年度
- 编译输出
declare @current datetime
set @current = '9-25-2010'
declare @year int
set @year = datepart(year, @current)
declare @quartermonth int
select @quartermonth = ((datepart(month, @current) - 1)/ 3 + 1)* 3 + 1 -- go to the next month
select @year, @quartermonth
-- adjust year if it's 4th quater
select @year = @year + @quartermonth / 12
-- avoid month overflow
select @quartermonth = @quartermonth % 12
select @year, @quartermonth
declare @firstdayofnextquater datetime
select @firstdayofnextquater = convert(datetime, convert(varchar, @year) + '-' + convert(varchar, @quartermonth) + '-01')
select dateadd(second, -1, @firstdayofnextquater)
这是在这里被问到和回答的:这是在这里被问到和回答的:在这个上下文中,什么是季度。例如,当2010年11月25日作为输入时,您希望得到什么输出?请回答:谢谢,@Dave。我确实去了那个链接,但我没有看到第三个解决方案。这就是我要找的!(它总是在你最后看的地方,不是吗?)在这种情况下,四分之一是什么。例如,当2010年11月25日作为输入时,您希望得到什么输出?请回答:谢谢,@Dave。我确实去了那个链接,但我没有看到第三个解决方案。这就是我要找的!(它总是在你最后看的地方,不是吗?)