Det här är listan du är ute efter DataType Precedence
I dina exempel:
WHERE quantity > '3'
'3' gjuts till int, matchande kvantitet
WHERE quantityTest > 3
Ingen gjutning krävs
WHERE date = 20120101
20120101 som ett nummer castas till ett datum som är för stort. t.ex.
select cast(20120101 as datetime)
Detta skiljer sig från
WHERE date = '20120101'
Där datumet som en sträng kan gjutas.
Om du går ner en tredjedel av CAST och CONVERT-referensen i avsnittet Implicita konverteringar finns en tabell över implicita konverteringar som är tillåtna. Bara för att det är tillåtet betyder det inte att det kommer att fungera, till exempel (20120101 -> datetime).