我刚刚遇到了我认为必须是一个coldfusion bug。
我有一个查询:
<cfquery name="qryTest" datasource="#This.ds#">
SELECT *
FROM MyLovelyTable
WHERE 1=1
AND phoneNumber = <cfqueryparam cfsqltype="cf_sql_bigint" value="#variables.phoneNumber#">
AND callTime between <cfqueryparam cfsqltype="cf_sql_date" value="#variables.startDate#"> AND <cfqueryparam cfsqltype="cf_sql_date" value="#variables.endDate#">
ORDER BY phoneID
</cfquery>
问题是,如果我通过第二个日期变量,则没有任何返回。如果我将查询前缀SQL复制,并将参数删除并查询数据库直接返回结果。就在通过CF时,它不起作用。如果我删除第二个日期参数,则可以正常工作。而且,如果我将第二个日期参数转换为字符串,则将起作用。
我尝试将第二个参数的值交换为现在()也不起作用。
据我所知,问题是第二个日期参数是日期类型。
我是否做出了明显的错误?
开始日期和端代变量是ColdFusion DateTime对象。CallTime是Mariadb中的DateTime列。
尝试使用cfsqltype="cf_sql_date"
而改用,因为" CF_SQL_DATETIME"不是有效的选项。请参阅cfqueryparam的帮助文档。