У меня есть две таблицы с датами, которые я хочу присоединиться к INNER JOIN. Эти таблицы связаны друг с другом с помощью FK, что гарантирует мне, что запись на Tabla A и ее «связанная запись в таблице B» в том же году.Эффективность: MONTH() vs. DATEDIFF()
Короче говоря, я хочу, чтобы две даты были в том же месяце. как объяснено, DATEDIFF() не имеет логического преимущества в моем случае - он никогда не даст мне -12 или 12, потому что год не имеет отношения к уравнению. Мои результаты всегда будут одинаковыми с DATEDIFF или MONTH (я проверял это, конечно).
С этими предположениями - что было бы более эффективным?
SELECT ....
FROM DatesA da
INNER JOIN DatesB db
ON MONTH(da.Date) = MONTH(db.Date)
AND [Rest of the join]
SELECT ....
FROM DatesA da
INNER JOIN DatesB db
ON DATEDIFF(MM, da.Date, db.Date) = 0
AND [Rest of the join]
Спасибо!
Просто в том же месяце? Как насчет того же года? Первый «SELECT» может дать странные результаты при работе с датами в течение более одного года. –
[Остальное соединение] имеет дело с другой таблицей, которая представляет годы и другие вещи. Поэтому я знаю, что мне не нужно сравнивать годы, только месяцы. – noamyg
@ user3367818 Затем вы должны сравнивать «MONTH() AND [часть остальной части объединения, например YEAR()]' s, с производительностью 'DATEDIFF()'. – GSerg