Това е списъкът, който търсите DataType Precedence
Във вашите примери:
WHERE quantity > '3'
'3' се преобразува в int, съответстващо на количество
WHERE quantityTest > 3
Не е необходимо кастинг
WHERE date = 20120101
20120101 като число се прехвърля към дата, която е твърде голяма. напр.
select cast(20120101 as datetime)
Това е различно от
WHERE date = '20120101'
Където е датата като низ може да се предава.
Ако слезете надолу с една трета от препратката за CAST и CONVERT към раздела Неявни преобразувания има таблица на разрешените неявни преобразувания. Това, че е разрешено, не означава, че ще работи, като (20120101 -> дата и час).