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 < '2015-09-23 00:00:00'.
Basically:
- Postgres reads all the rows
FROM data WHERE datetime < '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 < '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 < '2015-09-23 00:00:00')
)::integer;