I think it checks the type you have put in and then passes the type through. If no type is supplied or the type is not a correct one, it just defaults to a string check (i.e. varchar) - in this case it would work as that is what the field is. The documentation tells you the order of the validation - For these types, a data value can be converted to a numeric value: CF_SQL_SMALLINT, CF_SQL_INTEGER, CF_SQL_REAL, CF_SQL_FLOAT, CF_SQL_DOUBLE, CF_SQL_TINYINT, CF_SQL_MONEY, CF_SQL_MONEY4, CF_SQL_DECIMAL, CF_SQL_NUMERIC, and CF_SQL_BIGINT For these types, a data value can be converted to a date supported by the target data source: CF_SQL_DATE, CF_SQL_TIME, CF_SQL_TIMESTAMP For all other types, if the maxLength attribute is used, a data value cannot exceed the maximum length specified. ColdFusion debug output shows the bind variables as question marks and lists the values beneath the query, in order of usage. The code you used is probably the equivalent of excluding the cfsqltype attribute. Although it works, its technically incorrect as its an invalid type
... View more