SQL DATEDIFF Не работи?

Изпълнявам проста заявка DATEDIFF, но изглежда не изчислява правилно дните или правя нещо нередно.

Ако бягам

PRINT DATEDIFF(Day, 2010-01-20, 2010-01-01)
RETURN 19

Кое е вярно. Ако променя месеца в първата дата на февруари (02), получавам нещо странно.

PRINT DATEDIFF(Day, 2010-02-20, 2010-01-01)
RETURN 20

Сега не трябва ли да е 48 или нещо такова?

Може ли някой да види какво правя погрешно или това не е правилната функция, която да използвам, ако искам броя на дните между тези дати?

Опитах се да взема една дата от друга:

PRINT (2010-02-20) - (2010-01-01)
RETURN -20

Всяка помощ е много ценена.

Благодаря Дж.


person Jammer    schedule 25.03.2010    source източник
comment
@James - не, не трябва да е 48...трябва да поставите по-голямата дата като последен параметър. В противен случай резултатът е отрицателен. Не забравяйте и „ “. Вижте отговора ми по-долу.   -  person JonH    schedule 25.03.2010
comment
Нямах предвид 48 точно „не трябва ли да е 48 или нещо подобно“, просто направих бързо изчисление наум. Благодаря все пак за помощта.   -  person Jammer    schedule 25.03.2010


Отговори (4)


Липсват ти кавички

PRINT DATEDIFF(Day, '2010-01-01', '2010-02-20')

Получавате 20, защото

2010 - 1 - 1 = 2008
2010 - 2 - 20 = 1988

2008 - 1988 = 20
person CResults    schedule 25.03.2010

Ако го стартирате по този начин:

SELECT  2010-02-20, 2010-01-01

ще видиш

1988  2008

които са резултати или целочислени операции, които поставяте тук.

Оградете константите за дата в единични кавички:

SELECT  DATEDIFF(Day, '2010-02-20', '2010-01-01')

--
-50
person Quassnoi    schedule 25.03.2010

Работи, ако оградите датите си с апостроф -

SELECT DATEDIFF(day, '2010-02-20', '2010-01-10')

-41
person Andy Shellam    schedule 25.03.2010

PRINT DATEDIFF(Day, '2010-01-10', '2010-02-20') 

Това отнема 2-ра среща - първа среща. Не забравяйте „“.

person JonH    schedule 25.03.2010