Ich habe eine Abfrage erstellt mit cfspreadsheet
, die eine Datumsspalte namens "ActionDate" hat, und das Durchlaufen der Abfrage mit isDate()
zeigt, dass es eine Datumsspalte ist, aber in einer Abfrage dieser Abfrage ist als eine Zeichenfolge behandelt werden. Also, wenn ich ein Datum Filter in der where-Klausel anwenden, tut es nicht den Vergleich richtig:ColdFusion-Abfrage des Abfragedatumsvergleich
<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
kommt im Format mm/dd/yyyy
. Wenn ich die where-Klausel mit Stringliterale als Test zu tun, es funktioniert:
...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
Aber auch hier isDate(actiondate)
gibt true zurück, wenn sie durch die Abfrage Looping. Ich kann das Problem umgehen, aber gibt es eine Möglichkeit, das zu tun, was ich brauche, um noch eine Suchanfrage zu verwenden?
Sie erkennen, dass beide Ihre cfifs den gleichen Wert überprüfen? – Tomalak
Den Parameter in Anführungszeichen setzen: ''''. Funktioniert es? –
trincot
@trincot, hast du das selbst versucht? Hast du die erwarteten Ergebnisse erhalten? –