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
method#2 with REQUEST_TIME is not working when site’s date time format and date field is set to format d-m-yy format (Indian time format). Is there a way to cast format in fieldcondition?
LikeLike
I suggest you look into the table and check what is stored in the date field column, is it a string or a timestamp?
LikeLike