diff --git a/render.js b/render.js
index 1f920fd..8cd2f7d 100644
--- a/render.js
+++ b/render.js
@@ -921,21 +921,25 @@
     var wantvals = [];
     for (var valuei in values) {
       if (ingrid.types[keycol] === T_NUM) {
-        wantvals.push(parseFloat(values[valuei]).toString());
+        wantvals.push(parseFloat(values[valuei]));
       } else if (ingrid.types[keycol] === T_DATE ||
                  ingrid.types[keycol] === T_DATETIME) {
-        wantvals.push(myParseDate(values[valuei]).toString());
+        wantvals.push(dateTimeToStr(myParseDate(values[valuei])));
       } else {
-        wantvals.push(values[valuei].toString());
+        wantvals.push(values[valuei]);
       }
     }
 
     for (var rowi in ingrid.data) {
       var row = ingrid.data[rowi];
-      var cell = row[keycol].toString();
+      var cell = row[keycol];
       if (cell == undefined) {
         cell = null;
       }
+      var keytype = ingrid.types[keycol];
+      if (keytype == T_DATE || keytype == T_DATETIME) {
+        cell = dateTimeToStr(cell);
+      }
       var found = 0;
       for (var valuei in wantvals) {
         if (op == '=' && cell == wantvals[valuei]) {
diff --git a/t/trender.js b/t/trender.js
index 214fca7..6c51da7 100644
--- a/t/trender.js
+++ b/t/trender.js
@@ -265,17 +265,20 @@
   var rawdata = [
     ['a', 'b', 'c'],
     ['2013/01/02', '2', 3],
-    ['1977/11/14', '3.5', 1]
+    ['2013/04/14', '3.5', 1]
   ];
   afterquery.exec('filter=b=2', rawdata, function(grid) {
     WVPASSEQ(grid.data, [[new Date(2013,0,2), 2, 3]]);
   });
-  afterquery.exec('filter=a=1977-11-14', rawdata, function(grid) {
-    WVPASSEQ(grid.data, [[new Date(1977,10,14), 3.5, 1]]);
+  afterquery.exec('filter=a=2013-4-14', rawdata, function(grid) {
+    WVPASSEQ(grid.data, [[new Date(2013,3,14), 3.5, 1]]);
   });
-  afterquery.exec('filter=a>1977-11-14', rawdata, function(grid) {
+  afterquery.exec('filter=a<2013-04-14', rawdata, function(grid) {
     WVPASSEQ(grid.data, [[new Date(2013,0,2), 2, 3]]);
   });
+  afterquery.exec('filter=a>2013-01-02', rawdata, function(grid) {
+    WVPASSEQ(grid.data, [[new Date(2013,3,14), 3.5, 1]]);
+  });
 });
 
 wvtest('group', function() {
