当getdate
介于两个日期之间时,需要帮助获取第一个日期。
尝试使用以下代码,但是语法不正确。我想从下面的代码中将输出作为2018-09-29
:
DECLARE @Fromdt datetime
set @fromdt= (select case
when getdate()>='2018-09-01' and getdate()<='2018-09-13' then '2018-09-01'
when getdate()>='2018-09-15' and getdate()<='2018-09-27' then '2018-09-27'
when getdate()>='2018-09-29' and getdate()<='2018-10-10' then '2018-09-29'
when getdate()>='2018-10-12' and getdate()<='2018-10-24' then '2018-10-12'
end as frmdt from table1)
select @frmdt
答案 0 :(得分:0)
这可能是您想要的查询
select @fromdt = case
when getdate()>='2018-09-01' and getdate()<='2018-09-13' then '2018-09-01'
when getdate()>='2018-09-15' and getdate()<='2018-09-27' then '2018-09-27'
when getdate()>='2018-09-29' and getdate()<='2018-10-10' then '2018-09-29'
when getdate()>='2018-10-12' and getdate()<='2018-10-24' then '2018-10-12'
end
请注意,getdate()
返回日期和时间。如果您仅对日期感兴趣,则可以使用convert(date, getdate())
转换为仅日期
您可以声明一个current_date变量,并在查询中使用它
declare @current_date date
select @current_date = getdate();
答案 1 :(得分:0)
在您的查询变量名中,声明和选择不相同,我只删除了from table1
,就可以了
DECLARE @Fromdt datetime
set @fromdt= (select case
when getdate()>='2018-09-01' and getdate()<='2018-09-13' then '2018-09-01'
when getdate()>='2018-09-15' and getdate()<='2018-09-27' then '2018-09-27'
when getdate()>='2018-09-29' and getdate()<='2018-10-10' then '2018-09-29'
when getdate()>='2018-10-12' and getdate()<='2018-10-24' then '2018-10-12'
end as frmdt)
select @Fromdt
下面的链接是小提琴链接,我只检查您的查询
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=fbdf363ef76e176c4cf34f63cf07cfab