With an inner join, the difference is only a semantic difference. Both queries should produce the exact same query plan and the exact same result.
However, when you are using outer joins, then it matters if the condition is on the where
clause or on
the on clause.
UPDATE li
SET li.Description = im.Description
FROM tbSupplierLineItem li
RIGHT JOIN tbIMPACArchieveNew im ON li.ItemId = im.CommomCode
AND li.ProcessedDate >= CONVERT(DATE,GETDATE())
Is different than
UPDATE li
SET li.Description = im.Description
FROM tbSupplierLineItem li
RIGHT JOIN tbIMPACArchieveNew im ON li.ItemId = im.CommomCode
WHERE li.ProcessedDate >= CONVERT(DATE,GETDATE())
not only on the semantic level.
While the first query will return the expected result of a right join, the second one will infact return the results expected from an inner join.
That is because the right table values might be null if you have records on the left table that doesn't match them, and since comparing any value to null (including another null) will result with a false, it's basically changing the right join to an inner join.