2015-10-20 3 views
0

Я пытаюсь получить интервал (год) из двух дат, используя DATEDIFF, но он вычисляет только годы. для примера,Как получить интервал от двух дат?

SELECT DATEDIFF(year, '2005-01-03', '2006-01-01'); 

результат равен 1, но полученные результаты должны быть 0, потому что дата еще 01 января.

Есть ли другой способ?

+0

ли вы заботитесь о точности результата, когда високосные вступают в игру? –

+0

не совсем, так вот проблема, я хочу, чтобы сделать этот запрос 'Select * From Работника где (DATEDIFF (DAY, HireDate, GETDATE())/365)% 6 = 0 И (GETDATE() МЕЖДУ DATEADD (День, -6, CAST (STUFF (CONVERT (VARCHAR (23), HireDate, 121), 1, 4, CAST (YEAR (GETDATE()) AS VARCHAR (4))) AS DATETIME)) И DATEADD (Месяц, 6, CAST (STUFF (CONVERT (VARCHAR (23), HireDate, 121), 1, 4, CAST (YEAR (GETDATE()) AS VARCHAR (4))) AS DATETIME))) ' Показан весь работник, было 6 лет или несколько лет И 6 месяцев до и после найма в этом году. Это возможно? – susiana

+0

Вопрос в вашем комментарии очень отличается от исходного вопроса. Я бы рекомендовал задать новый вопрос. Внимательно объясните, в чем проблема. Покажите запрос, который у вас есть, и объясните, чего вы пытаетесь достичь. Укажите несколько примеров, несколько строк выборочных данных и то, что вы ожидаете в результате запроса. Если вы зададите такой вопрос, вы получите очень хорошие ответы. На данный момент невозможно (для меня) понять ваш вопрос в комментарии. –

ответ

0
SELECT FLOOR(DATEDIFF(day, '2005-01-03', '2006-01-01')/365) 
Смежные вопросы