We can select nodes by conditions using EntityFieldQuery .

Drupal 7 – Get specific nodes using EntityFieldQuery

After I have installed the Date module, I could create a content type with a date field called field_expiry_date. When i setup this field, there are 3 date options in the field type.

Date

Date (ISO format)

Date (Unix timestamp)







Usually i pick the 1st option and i use the following piece of code to select the nodes which have the expiry date <= today .

$query = new EntityFieldQuery(); $query->entityCondition('entity_type', 'node') ->entityCondition('bundle', '<node type>') ->propertyCondition('status', 1) ->fieldCondition('field_expiry_date', 'value', '2012-05-08 00:00:00', '<='); $result = $query->execute();

It also works even you used timestamp in the fieldCondition like REQUEST_TIME .

$query = new EntityFieldQuery(); $query->entityCondition('entity_type', 'node') ->entityCondition('bundle', '<node type>') ->propertyCondition('status', 1) ->fieldCondition('field_expiry_date', 'value', REQUEST_TIME, '<='); $result = $query->execute();

If you pick Date (Unix timestamp) when creating the date field. The database will store the date in timestamp format and you can still retrieve the nodes in the same way using the above piece of code.

Done =)

Reference: Drupal Forum – Set date field condition in EntityFieldQuery