2012-05-17 4 views
2

Хорошо, я думал, что я хорошо разбираюсь в SQL ... Мне нужно провести сравнение между двумя столбцами datetime.Сравнение значений даты и времени по-разному

Может кто-то объяснить разницу между

DateA > DateB 

и

DateDiff(d,DateB,DateA) >= 1 

Я думал, что эти два утверждения были функционально эквивалентны, но я предполагаю, что я был неправ ...

+1

Пробовали ли вы их сравнить различия? –

+0

Одно большое различие заключается в том, что первый [sargable] (http://en.wikipedia.org/wiki/Sargable), а второй - нет. Не используйте второе выражение в предложении where. Если вам нужна функциональность из второго выражения, вы должны переписать свой первый запрос примерно так: cast (DateA as date)> cast (DateB as date). –

ответ

4
DateA > DateB 

проверяет, является ли DateA больше, чем DateB (01/12/2012 14:50:01 больше, чем 01/12/2012 14:50:00).


DateDiff(d,DateB,DateA) >= 1 

проверяет, есть ли разница в днях (DatePart d в качестве первого аргумента) равна или больше, чем 1 день.

1

DateA больше DateB, если это одна минута или одна секунда или одна миллисекунда позже.

Ваш DateDiff ищет разницу одного дня.

Если вы намереваетесь это или нет, DateTime всегда содержит время, поэтому вы должны принять это во внимание.

1

DateA > DateB будет справедливо, если DateA даже дробно больше DateB (скажем, 1 миллисекунды).

DateDiff(d,DateB,DateA) >= 1 будет правдой, если разница между датой составляет день или больше.

2

DateA > DateB будет оценивать справедливо, если DateA по меньшей мере, одну миллисекунду больше, чем DateB

DateDiff(d,DateB,DateA) >= 1 будет оценивать справедливо, если разница между DateB и DateA, по крайней мере один день

Другими словами, если вы считаете, что сегодня в 12:00 больше, чем сегодня в 11:00 пойти с опцией один

Если вы считаете, что дата только после полуночи больше, чем другой, идти с опцией два

+0

'больше одного дня' - я думаю, что вы имели в виду' есть хотя бы один день' –

+0

кажется мне таким же, один день или больше. Но спасибо за исправление :) – Diego

+1

'больше одного дня'' '1' не'> = 1' –

Смежные вопросы