SQL选择具有动态日期的大小写
我真的不知道如何做我正在寻找的查询,希望有人能帮助我。基本上,我想知道下面这个查询到底做了什么,除了在动态年份中使用它们,这样我就不需要每次年份发生变化时都更新存储过程SQL选择具有动态日期的大小写,sql,sql-server,case,getdate,Sql,Sql Server,Case,Getdate,我真的不知道如何做我正在寻找的查询,希望有人能帮助我。基本上,我想知道下面这个查询到底做了什么,除了在动态年份中使用它们,这样我就不需要每次年份发生变化时都更新存储过程 SELECT case when Convert(varchar(8), getDate(),1) between '01/01/2013' and '03/31/2013' then '04/01/2013 - 06/30/2013' when Convert(varchar(8), get
SELECT
case
when Convert(varchar(8), getDate(),1) between '01/01/2013' and '03/31/2013' then '04/01/2013 - 06/30/2013'
when Convert(varchar(8), getDate(),1) between '04/01/2013' and '06/30/2013' then '07/01/2013 - 09/30/2013'
when Convert(varchar(8), getDate(),1) between '07/01/2013' and '09/30/2013' then '10/01/2013 - 12/31/2013'
when Convert(varchar(8), getDate(),1) between '10/01/2013' and '12/31/2013' then '01/01/2014 - 03/31/2014'
end
我想让它像
when Convert(varchar(8), getDate(), 1) between '01/01/currentYear' and '03/31/currentYear' then '04/01/thisyear - 06/30/currentYear'
如果有人能在这方面给我一点帮助,那就太好了。
非常感谢你,
NickG作为参数在当年通过:
DECLARE @YEAR VARCHAR(4)
SET @YEAR = DATEPART(YEAR,GETDATE())
SELECT
case
when Convert(varchar(8), getDate(),1) between '01/01/'+ @YEAR and '03/31/'+ @YEAR then '04/01/'+@YEAR+' - 06/30/'+@YEAR
when Convert(varchar(8), getDate(),1) between '04/01/'+ @YEAR and '06/30/'+ @YEAR then '07/01/'+@YEAR+' - 09/30/'+@YEAR
when Convert(varchar(8), getDate(),1) between '07/01/'+ @YEAR and '09/30/'+ @YEAR then '10/01/'+@YEAR+' - 12/31/'+@YEAR
when Convert(varchar(8), getDate(),1) between '10/01/'+ @YEAR and '12/31/'+ @YEAR then '01/01/'+@YEAR+' - 03/31/'+@YEAR
end
您完全可以不使用
CASE
语句来执行此操作:
SELECT CONVERT(VARCHAR(8),(DATEADD(quarter, 1+DATEDIFF(quarter, 0, GETDATE()), 0)),1)+ ' - '
+ CONVERT(VARCHAR(8),(DATEADD(day,-1,DATEADD(quarter, 2+DATEDIFF(quarter, 0, GETDATE()), 0))),1)
要确认它在其他日期有效,请执行以下操作:
DECLARE @date DATE = '2012-12-10'
SELECT CONVERT(VARCHAR(8),(DATEADD(quarter, 1+DATEDIFF(quarter, 0, @date), 0)),1)
+ ' - '
+ CONVERT(VARCHAR(8),(DATEADD(day,-1,DATEADD(quarter, 2+DATEDIFF(quarter, 0, @date), 0))),1)
这太完美了,我只需要使用年份(getDate())来获取今年,并将第二个参数设置为year+1。我不是DBA,非常感谢@NickG我已经编辑了我的答案以包含GETDATE()函数,这样你仍然只需要一个参数,你需要在去年的
部分中添加1。当部分时,应该是明年的第一季度,而不是同一年的第一季度。