Sirish Kumar Bethala
Sirish Kumar Bethala

Reputation: 9269

Oracle get records updated in last one hour

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

Answers (2)

O.S .K.
O.S .K.

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

Ted Shaw
Ted Shaw

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

Related Questions