Жесткое сравнение даты в регистре - PullRequest
0 голосов
/ 29 сентября 2018

Нужна помощь в получении первой даты, когда 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

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

В вашем запросе имя переменной в объявлении и выборе не одно и то же, и я просто удаляю 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

0 голосов
/ 29 сентября 2018

Это, вероятно, запрос, который вы хотите

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();
...