SQL DATEDIFF Не работает? - PullRequest
       17

SQL DATEDIFF Не работает?

5 голосов
/ 25 марта 2010

Я выполняю простой запрос 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

Любая помощь высоко ценится.

Спасибо J.

Ответы [ 4 ]

4 голосов
/ 25 марта 2010

Вам не хватает кавычек

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

Вы получаете 20, потому что

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

2008 - 1988 = 20
1 голос
/ 25 марта 2010

Это работает, если вы окружаете свои даты апострофами -

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

-41
1 голос
/ 25 марта 2010
PRINT DATEDIFF(Day, '2010-01-10', '2010-02-20') 

Это занимает 2-е свидание - первое свидание. Не забывайте ''.

1 голос
/ 25 марта 2010

Если вы запустите его так:

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

вы увидите

1988  2008

результаты или целочисленные операции, которые вы здесь положили.

Заключите константы даты в одинарные кавычки:

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

--
-50
...