Reputation: 9269
Below is the query I am running to get updates in last one hour.
select count(*)
from my_table
where last_updated_date between to_date(to_char(sysdate,'YYYY-MM-DD HH24'))-1/24 and to_date(to_char(sysdate,'YYYY-MM-DD HH24'));
Our DB is oracle and it is failing with
ORA-01861: literal does not match format string
01861. 00000 - "literal does not match format string"
*Cause: Literals in the input must be the same length as literals in
the format string (with the exception of leading whitespace). If the
"FX" modifier has been toggled on, the literal must match exactly,
with no extra whitespace.
*Action: Correct the format string to match the literal.
What is the reason for this failure?
Upvotes: 20
Views: 104900
Reputation: 23
If your db user doesn't have access to sysdate there is another way
select count(*) from my_table where last_updated_date >= CURRENT_TIMESTAMP - INTERVAL '3600' SECOND
You can change SECOND to HOURS MINUTES DAYS etc and time depending on your variable
Upvotes: 1
Reputation: 2306
just Subtract 1/24 from sysdate to get the time of 1 hour ago
select count(*) from my_table where last_updated_date >= (sysdate-1/24)
Upvotes: 52