Как заставить TSQL принимать две даты EQUAL, если разница составляет всего n миллисекунд? - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть две таблицы, table1 и table2.

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

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 миллисекунд, в качестве диапазона допуска?

Спасибо

Ответы [ 2 ]

4 голосов
/ 22 декабря 2011

Да

select *
from table1 t1 
INNER JOIN table2 t2 
ON t1.HaloDate between dateadd(ms,-5,t2.HaloDate) and dateadd(ms,5,t2.HaloDate) 
4 голосов
/ 22 декабря 2011

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

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

означает, что разница значений даты менее 5 секунд.

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

...