我有一個使用cfspreadsheet
創建的查詢,它具有一個名爲「Actiondate」的日期列,並且循環查詢使用isDate()
顯示它是一個日期列,但是在查詢中查詢它是被視爲一個字符串。所以,當我在where子句中應用的日期過濾器,它不能正確地做比較:查詢日期比較的ColdFusion查詢
<cfquery ... >
SELECT *
FROM arguments.q
WHERE 1=1
<cfif isDate(arguments.dateFrom)>
AND actiondate >= <cfqueryparam cfsqltype="cf_sql_timestamp" value="#arguments.dateFrom#">
</cfif>
<cfif isDate(arguments.dateFrom)>
AND actiondate <= <cfqueryparam cfsqltype="cf_sql_timestamp" value="#arguments.dateTo#">
</cfif>
</cfquery>
actiondate
進來的mm/dd/yyyy
格式。當我用字符串文字做where子句作爲測試,它的工作原理:
...where actiondate = '11/05/2015' --returns all rows with that "date"
<cfset tempdate = createdate(2015,11,5)>...
...where actiondate = <cfqueryparam cfsqltype="cf_sql_date" value="#temp#"> --returns nothing
但同樣,isDate(actiondate)
返回true通過查詢循環時。我可以解決這個問題,但是有沒有辦法做到我仍然需要使用查詢查詢?
你意識到你的兩個cfifs檢查相同的值? – Tomalak
將參數用引號括起來:''''。那樣有用嗎? –
trincot
@trincot,你親自嘗試過嗎?你有沒有得到預期的結果? –