У меня есть таблица sql.Мы назовем это «стол».Я пытаюсь сделать выбор с несколькими предложениями WHERE.Мне нужно, чтобы последнее предложение where было OR.Обычно я просто делаю это:
SELECT *
FROM table
WHERE 1=1
AND (firstName='tom' OR lastName='jones')
Однако в этом конкретном запросе мне нужно, чтобы две стороны OR были DATEDIFFS.Я пытаюсь захватить все строки, где разница между отметкой времени и «СЕЙЧАС» превышает 10 часов или меньше 0 часов.Итак, что у меня сейчас, какие ошибки, это:
SELECT *
FROM table
WHERE 1=1
AND (
DATEDIFF(hh, table.timestamp, GETDATE()) > 10
OR
DATEDIFF(hh, table.timestamp, GETDATE()) < 0
)
Я пробовал несколько разных версий того, что у меня есть выше, и, похоже, ничего не работает.Любая помощь приветствуется!Я уверен, что только что слишком долго смотрел на это, и это что-то глупое.
Новый более подробный запрос:
Да, в моем запросе осталось два соединения, что, вероятно,вносить изменения здесь.Я старался, чтобы мои примеры были простыми, но это меня укусило.Вот более уместный запрос:
SELECT
tblCheckoutActivity.rid,
tblCheckoutActivity.checkedOutUser,
tblCheckoutActivity.checkedOutTime,
tblCheckoutInventory.serial,
tblCheckoutInventory.unit,
tblCheckoutInventory.tag,
tblCheckoutUsers.firstName,
tblCheckoutUsers.lastName
FROM
tblCheckoutActivity
LEFT JOIN
tblCheckoutInventory
ON
tblCheckoutActivity.scannerID = tblCheckoutInventory.SID
LEFT JOIN
tblCheckoutUsers
ON
tblCheckoutActivity.checkedOutUser = tblCheckoutUsers.badgeID
WHERE
tblCheckoutActivity.checkedInTime Is Null
AND
tblCheckoutInventory.site='San Francisco'
AND
(
DATEDIFF(hh, tblCheckoutActivity.checkedOutTime, GETDATE()) > 10
OR
DATEDIFF(hh, tblChecckoutActivity.checkedOutTime, GETDATE()) < 0
)
ORDER BY tblCheckoutUsers.lastName