2011-12-22 2 views
0

У меня есть две таблицы, таблица1 и таблица2.Как заставить TSQL принимать две даты EQUAL, если существует только разность в миллисекундах?

И я присоединяюсь к ним, сравнивая пару столбцов, а один из них - столбец Date.

select * 
from table1 t1 
INNER JOIN table2 t2 ON t1.HaloDate = t2.HaloDate 

Мой вопрос я обнаружил, что не может присоединиться для сравнения 2 датами ниже:

'2011-07-23 14: 01: 32.113' и «2011-07-23 14:01: 32.114 '

Можно ли написать это объединение, игнорируя милисекунды или вводя диапазон, равный 5 милисекундам, как диапазон допуска?

Благодаря

+0

вы могли бы применить функцию на обоих table1.HaloDate и table2.HaloDate, но это сделает ваши индексы бесполезны – cristian

ответ

4

Да:

select * 
from table1 t1 
INNER JOIN table2 t2 
ON t1.HaloDate between dateadd(ms,-5,t2.HaloDate) and dateadd(ms,5,t2.HaloDate) 
4

Используйте функцию DATEDIFF и поместить в него любой диапазон, который вы хотите, например:

ABS(DATEDIFF(second, DateField1, DateField2)) < 5 

означает, что дата разница в значениях меньше, чем за 5 секунд.

Вы можете использовать любой тег для диапазона времени - от нескольких миллисекунд до нескольких лет

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