DateFormat() returns a string, not a date object.
Suppose you have two strings like so:
one = "aaab";
two = "abaa";
and you compare them:
<cfoutput>#one GT two#</cfoutput>
you'll get NO (or FALSE), because two is 'greater' than one.
Now suppose you have two strings like so:
date1 = "10/31/2013";
date2 = "12/31/2012";
Now you and I can see that date1 refers to a later date than date2. But if you use CF to say if date1 GT date2, it should treat them as strings. And doing it that way, the string starting "12" is greater than the string starting "10".
So Reed's answer is correct. Although in testing I found that CF must be recognising the strings as looking like dates and actually doing a date comparison, which sounds more like a bug than a feature to me, and a dangerous thing to assume. I'd much rather construct two date objects and use dateDiff()