anchor.diff:  		* @list Whether or not to param as a list (i.e. for passing a param'd list to IN() statements )
   		* @null Whether the value is null or not
   		**/
  -		public function queryParam( required string value, string cfsqltype = "cf_sql_varchar", boolean list = false, boolean null = false ){
  +		public function queryParam( required string value, string cfsqltype = "", boolean list = false, boolean null = false ){
   
   			var returnString = {};
   			var returnStruct = {};
  -
  +			// best guess if
  +			if( ( isDate( value ) || reFindNoCase( "{ts.*?}", value ) ) && ( cfsqltype does not contain "date" || cfsqltype does not contain "time" ) ){
  +				arguments.cfsqltype = "cf_sql_date";
  +			}else if( !len( trim( cfsqltype ) ) ){
  +				// default to varchar
  +				arguments.cfsqltype = "cf_sql_varchar";
  +			}
   			returnStruct = queryParamStruct( value = trim( arguments.value ), cfsqltype = arguments.cfsqltype, list = arguments.list, null = arguments.null );
   	 		returnString = '#chr(998)#list=#chr(777)##returnStruct.list##chr(777)# null=#chr(777)##returnStruct.null##chr(777)# cfsqltype=#chr(777)##returnStruct.cfsqltype##chr(777)# value=#chr(777)##returnStruct.value##chr(777)##chr(999)#';
   			return returnString;
  
positive.code: 	<cfproperty name="dbtype" type="string">
  	<cfproperty name="dbversion" type="string">
  	<cfproperty name="writeTransactionLog" type="boolean">
  	<cfset _resetCriteria() />
  	<cfscript>
  
  
negative.code: 			if( isCustomFunction( onFinish ) ){
  				var callbackData = { "ID" = arguments.recordID };
  				onFinish( callbackData );
  			}
  
  			return ret;
  