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
Любая помощь очень ценится.
Спасибо Дж.
Решение
Вам не хватает цитат
PRINT DATEDIFF(Day, '2010-01-01', '2010-02-20')
Ты получаешь 20, потому что
2010 - 1 - 1 = 2008
2010 - 2 - 20 = 1988
2008 - 1988 = 20
Другие советы
Если вы запустите это таким образом:
SELECT 2010-02-20, 2010-01-01
вы увидите
1988 2008
которые являются результатами или целочисленными операциями, которые вы приводите здесь.
Заключите константы даты в одинарные кавычки:
SELECT DATEDIFF(Day, '2010-02-20', '2010-01-01')
--
-50
Это сработает, если вы будете окружать свои даты апостроф -
SELECT DATEDIFF(day, '2010-02-20', '2010-01-10')
-41
PRINT DATEDIFF(Day, '2010-01-10', '2010-02-20')
Для этого требуется 2-е свидание - первое свидание.Не забывай " '.