diff --git a/facetapi.callbacks.inc b/facetapi.callbacks.inc
index 86996ef..32fd387 100644
--- a/facetapi.callbacks.inc
+++ b/facetapi.callbacks.inc
@@ -103,9 +103,12 @@ function facetapi_map_date(array $values, array $options) {
  * @todo Cache this value.
  */
 function facetapi_get_min_date(array $facet) {
-  $query = db_select('node', 'n')->condition('status', 1);
-  $query->addExpression('MIN(' . $facet['name'] . ')', 'max');
-  return $query->execute()->fetch()->max;
+  $query = db_select('node', 'n')
+    ->fields('n', array($facet['name']))
+    ->condition('status', 1)
+    ->orderBy($facet['name'], 'ASC')
+    ->range(0,1);
+  return $query->execute()->fetch()->{$facet['name']};
 }
 
 /**
@@ -120,9 +123,12 @@ function facetapi_get_min_date(array $facet) {
  * @todo Cache this value.
  */
 function facetapi_get_max_date(array $facet) {
-  $query = db_select('node', 'n')->condition('status', 1);
-  $query->addExpression('MAX(' . $facet['name'] . ')', 'max');
-  return $query->execute()->fetch()->max;
+  $query = db_select('node', 'n')
+    ->fields('n', array($facet['name']))
+    ->condition('status', 1)
+    ->orderBy($facet['name'], 'DESC')
+    ->range(0,1);
+  return $query->execute()->fetch()->{$facet['name']};
 }
 
 /**
