sudhakarthikeyan Ответов: 2

Когда я запускаю нижеприведенный запрос 0 лет следует избегать


select 
  Convert(varchar(100), datediff(year, 0, ET-ST)) + 'years' +
  Convert(varchar(100), datepart(month, ET-ST) - 1) + 'months' +
  Convert(varchar(100), datepart(day, ET-ST) - 1) + 'days'
from
  (
    select  
      ST = convert(datetime, '2016-05-26 20:03:28.127'),
      ET = convert(datetime, getdate())
  ) a 


когда я запускаю вышеприведенный вывод запроса следующим образом

0years2months1days.

но я хочу избежать 0 лет

я хочу показать только нижеприведенный вывод

2months1days. только

для этого какие изменения я хочу сделать в приведенном выше запросе.

Что я уже пробовал:

избегайте 0 лет в моем выходе

когда я запускаю нижеприведенный запрос 0 лет следует избегать

2 Ответов

Рейтинг:
2

Animesh Datta

Привет ,
Просто добавьте один дополнительный Case условие, чтобы избежать 0 лет .

select case when datediff(year,0,ET-ST)>0 then Convert(varchar(100),datediff(year,0,ET-ST)) + 'years' else '' end     + 
Convert(varchar(100),datepart(month,ET-ST)-1 )+ 'months'+Convert(varchar(100),
datepart(day,ET-ST)-1) +'days'
from
(
select 
ST = convert(datetime,'2015-03-26 20:03:28.127'),
ET = convert(datetime,getdate())
) a 


Спасибо


Рейтинг:
0

Kornfeld Eliyahu Peter

Вы должны добавить СЛУЧАЙ-КОГДА-ТОГДА-ЕЩЕ-КОНЕЦ[^] в первой строке...
Что-то вроде этого:

CASE WHEN DATEDIFF(YEAR, 0, ET-ST) <> 0 THEN CONVERT(VARCHAR(100), DATEDIFF(YEAR, 0, ET-ST)) + ' YEARS, ' ELSE '' END +