Copy link to clipboard
Copied
I'm trying to only show particular results in my query based on the following:
If the "agreedate" is greater than today's date, minus 60 days, show it. Otherwise I don't want the results showing.
I am still getting results showing from last year and I don't know why.
Here is my code:
<!---set todays date minus 60 days. This is working and shows the correct date--->
<cfset invitelimit = #now()#>
<cfset invitelimit = #DateFormat(DateAdd('d', -60, invitelimit),'mm-dd-yyyy')#
<!---query the items from the db and try to only grab the ones with an agreedate greater then the invitelimit date--->
<cfquery name="qinvite" datasource="#Application.ds#">
SELECT DISTINCT * FROM team a
INNER JOIN teammembers b ON a.id = b.team_id
INNER JOIN termsagreement c ON a.login = c.login
WHERE c.agreedate > #invitelimit# AND b.comp_id = 0
Group By a.teamname
</cfquery>
First of all. Confirm that the 'argeedate' column is a datetime column. Not some other data type that would be much harder to work with.
Secondly, you should be providing a proper database datetime value. The easiest way would be with the <cfqueryparam...> tag.
I.E.
WHERE
c.agreedate > <cfqueryParam value="#invitelimit#" cfsqltype = "cf_sql_timestamp"> AND
b.comp_id = <cfqueryparam value="0" cfsqltype = "cf_sql_integer">
Copy link to clipboard
Copied
First of all. Confirm that the 'argeedate' column is a datetime column. Not some other data type that would be much harder to work with.
Secondly, you should be providing a proper database datetime value. The easiest way would be with the <cfqueryparam...> tag.
I.E.
WHERE
c.agreedate > <cfqueryParam value="#invitelimit#" cfsqltype = "cf_sql_timestamp"> AND
b.comp_id = <cfqueryparam value="0" cfsqltype = "cf_sql_integer">
Copy link to clipboard
Copied
Thanks Ian, you did it again! My "agreedate" column is set to "date" in a MySQL database, not sure if that matters. Looks like changing my query to your suggestion did the trick. I always forget to use cfqueryparam in my queries:
<cfset invitelimit = #now()#>
<cfset invitelimit = #DateFormat(DateAdd('d', -60, invitelimit),'mm-dd-yyyy')#>
<cfquery name="qinvite" datasource="#Application.ds#">
SELECT DISTINCT * FROM team a
INNER JOIN teammembers b ON a.id = b.team_id
INNER JOIN termsagreement c ON a.login = c.login
WHERE c.agreedate > <cfqueryParam value="#invitelimit#" cfsqltype = "cf_sql_timestamp"> AND b.comp_id = <cfqueryparam value="0" cfsqltype = "cf_sql_integer">
Group By a.teamname
</cfquery>
Copy link to clipboard
Copied
Another approach is to use mySQL date functions. Then you don't have to worry about cf variables.
Get ready! An upgraded Adobe Community experience is coming in January.
Learn more