filtering elements between 2 dates
You call it a bit of a hack, but I think the way you're doing it is the proper way:

$criteria-&gt;dateCreated = '&gt;= ' . $fromDate-&gt;format(DateTime::MYSQL_DATETIME);
$criteria-&gt;dateUpdated = '&lt;= ' . $toDate-&gt;format(DateTime::MYSQL_DATETIME);


Your last example would work (with a syntax change) if you were you looking for a date range within a single field (either dateCreated or dateUpdated) like so, but not across two fields:

$criteria-&gt;dateUpdated = array('and', '&gt;='.$fromDate-&gt;format(DateTime::MYSQL_DATETIME), '&lt;='.$toDate-&gt;format(DateTime::MYSQL_DATETIME));