T-SQL:
1 (ANSI): convert(varchar(10),@DueDate, 102) < convert(varchar(10),getdate(), 102)
2 (США): convert(varchar(10),@DueDate, 101) < convert(varchar(10),getdate(), 101)
Обратите внимание, что при рассмотрении года они будут возвращать разные результаты.
Почему?
Какая разница? Почему оператор не учитывает год при использовании №2?


Что ты пытаешься сделать? Вы тут сравниваете варчары. Посмотрите на вывод этих операторов:
print convert(varchar(10), getdate(), 101)
print convert(varchar(10), getdate(), 102)
Это печатает это:
01/14/2009
2009.01.14
Сравнение первой формы действительно будет лишь проверкой того, меньше ли месяц одной даты, чем месяц текущей даты.
Есть ли причина, по которой вам нужно преобразовать даты в varchar? Почему бы не сравнить их напрямую?
@DueDate < getdate()