case 语句中的硬代码日期比较
Hard code date comparison in case statement
当 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
这可能是您想要的查询
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()
returns 日期和时间。如果您只对日期感兴趣,可以使用 convert(date, getdate())
转换为日期
您可以声明一个 current_date 变量并在您的查询中使用它
declare @current_date date
select @current_date = getdate();
在声明和选择中的查询变量名称不相同,我只是删除 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
link 下方是 fiddle link,我刚刚检查了您的查询
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=fbdf363ef76e176c4cf34f63cf07cfab
当 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
这可能是您想要的查询
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()
returns 日期和时间。如果您只对日期感兴趣,可以使用 convert(date, getdate())
转换为日期
您可以声明一个 current_date 变量并在您的查询中使用它
declare @current_date date
select @current_date = getdate();
在声明和选择中的查询变量名称不相同,我只是删除 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
link 下方是 fiddle link,我刚刚检查了您的查询
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=fbdf363ef76e176c4cf34f63cf07cfab