COUNT(*) gives more than 1 with LIMIT 1?
You're limiting the resultset of the aggregate function count(), which will always return 1 row. IE: It's limiting the output of the count(*) function, rather than LIMITing just FROM data WHERE datetime &lt; '2015-09-23 00:00:00'.

Basically:


Postgres reads all the rows FROM data WHERE datetime &lt; '2015-09-23 00:00:00' 
Postgres then count(*)s them 
Postgres then LIMITs that
count


I suspect you're wanting it to do this:

SELECT COUNT(*) FROM ( 
    SELECT * FROM data WHERE datetime &lt; '2015-09-23 00:00:00' LIMIT 1
);


As this is basically an existence check, one could also do:

SELECT (EXISTS 
           (SELECT 1 FROM data WHERE datetime &lt; '2015-09-23 00:00:00')
       )::integer;