我有一个表格期间
Periods
presentday
presentday+1
presentday+2
presentday+3
Presenday
presentday+1
presentday+2
presentday+3
我的查询以获取句点=当前日期的案例
SELECT
REPLACE(SUBSTRING(convert(varchar, getdate(), 113),1,11),' ','-') as StartDate
,REPLACE(SUBSTRING(convert(varchar, getdate(), 113),1,11),' ','-') as EndDate
from Periods where Periods='Presentday'
我如何为上述查询编写案例陈述?
答案 0 :(得分:1)
这是我能想到的最好的方法,试图理解这个问题。
create table Periods(Period varchar(30))
insert Periods
select 'presentday' union
select 'presentday+1' union
select 'presentday+2' union
select 'presentday+3'
select p.Period,
REPLACE(SUBSTRING(convert(varchar, getdate(), 113),1,11),' ','-') as StartDate,
case when p.Period = 'presentday' then REPLACE(SUBSTRING(convert(varchar, getdate(), 113),1,11),' ','-')
when p.Period = 'presentday+1' then REPLACE(SUBSTRING(convert(varchar, dateadd(d,1,getdate()), 113),1,11),' ','-')
when p.Period = 'presentday+2' then REPLACE(SUBSTRING(convert(varchar, dateadd(d,2,getdate()), 113),1,11),' ','-')
when p.Period = 'presentday+3' then REPLACE(SUBSTRING(convert(varchar, dateadd(d,3,getdate()), 113),1,11),' ','-') end as EndDate
from Periods p
答案 1 :(得分:1)
如果有一些数字可以从Periods表中可靠地获得,那么这是更动态的:
select p.Period,
REPLACE(SUBSTRING(convert(varchar, getdate(), 113),1,11),' ','-') as StartDate,
case
when p.Period = 'presentday' then REPLACE(SUBSTRING(convert(varchar, getdate(), 113),1,11),' ','-')
else REPLACE(SUBSTRING(convert(varchar, dateadd(d,cast(right(p.Period,1) as int),getdate()), 113),1,11),' ','-')
end
from periods p