Вопрос

Я запускаю простой запрос 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-е свидание - первое свидание.Не забывай " '.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top