Questo è l'elenco che stai cercando DataType Precedence
Nei tuoi esempi:
WHERE quantity > '3'
'3' viene convertito in int, corrispondente alla quantità
WHERE quantityTest > 3
Nessun casting richiesto
WHERE date = 20120101
20120101 come numero viene scelto per una data troppo grande. es.
select cast(20120101 as datetime)
Questo è diverso da
WHERE date = '20120101'
Dove la data come stringa può essere lanciato.
Se scendi di un terzo del Riferimento CAST e CONVERT alla sezione Conversioni implicite è presente una tabella delle conversioni implicite consentite. Solo perché è consentito non significa che funzionerà, ad esempio (20120101 -> datetime).