I want to select records that are 1 month old or newer.
The query is: SELECT * FROM foobar WHERE created_at > DATE_SUB(curdate(), INTERVAL 1 MONTH)
Using Pro
just replace the mysql date code you are using there with a precalculated php variable that has that date in it already.
i.e.
$monthAgo = '2008-10-03';
$c = new Criteria
$c->add(FoobarPeer::CREATED_AT, $monthAgo, Criteria::GREATER_THAN);
obviously, you should dynamically calculate the date in php, rather than hard coding it, but you get the picture.
I think there is no option more than using Criteria::CUSTOM or doing a custom SQL query like this:
$con = Propel::getConnection(DATABASE_NAME);
$sql = "SELECT foobar.* FROM foobar WHERE created_at > DATE_SUB(curdate(), INTERVAL 1 MONTH)";
$stmt = $con->prepare($sql);
$stmt->execute();
$books = FoobarPeer::populateObjects($stmt);
That's because Propel tries to be DBMS-agnostic, to help migration by doing a simple configuration value change, so it doesn't have any DBMS specific functions built in.