Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How to get last n hours of data

RameshSagarFeb 19 2020 — edited Mar 7 2020

Hi All,

I am trying to modify my query to get last n-hour(last 1 hour currently) data. Below is my query:

select accTab.lanid Access_ID,accTab.username Access_Name,nar.NAME Access_Profile,accTab.login_type Access_Type,accTab.country Access_Country,accTab.source_system Access_SourceIP,

accTab.source_host Access_SourceHost,(to_char(accTab.login_date,'DDMMYYYY HH12.MI.SS AM')) Access_LoginTimeStamp,(to_char(accTab.logout_date,'DDMMYYYY HH12.MI.SS AM'))

Access_LogoutTimeStamp

from (select lanid,username,login_type,country,source_system,source_host,login_date,logout_date,

rank() over (partition by lanid order by login_date desc) rnk from SECMON_ACCESSLOG) accTab inner join

nvb_az_authorization naa on accTab.LANID = naa.windows_identity inner join

nvb_az_roles nar on naa.role_id=nar.role_id

and accTab.login_date between sys_extract_utc(systimestamp - 1/24) and sys_extract_utc(systimestamp);

Note: The login_date column and logout_date columns are declared as Timestamp and are stored with timestamps in UTC timezone/format

But, I am getting below error:

ORA-30175: invalid type given for an argument

30175. 00000- "invalid type given for an argument"

*Cause: There is an argument with an invalid type in the argument list.

*Action: Use the correct type wrapper for the argument.

Error at Line: 8 Column: 61

I have also tried the below modifications in the query:

select accTab.lanid Access_ID,accTab.username Access_Name,nar.NAME Access_Profile,accTab.login_type Access_Type,accTab.country Access_Country,accTab.source_system Access_SourceIP,

accTab.source_host Access_SourceHost,(to_char(accTab.login_date,'DDMMYYYY HH12.MI.SS AM')) Access_LoginTimeStamp,(to_char(accTab.logout_date,'DDMMYYYY HH12.MI.SS AM'))

Access_LogoutTimeStamp

from (select lanid,username,login_type,country,source_system,source_host,login_date,logout_date,

rank() over (partition by lanid order by login_date desc) rnk from SECMON_ACCESSLOG) accTab inner join

nvb_az_authorization naa on accTab.LANID = naa.windows_identity inner join

nvb_az_roles nar on naa.role_id=nar.role_id

and accTab.login_date > accTab.login_date-1;

but this query gives all the data present in the table.

Can someone help me what is it i am missing to get last 1 hour data from the query?

Note: I am using Oracle 11g and SQL Developer

This post has been answered by Cookiemonster76 on Feb 19 2020
Jump to Answer
Comments
Post Details
Added on Feb 19 2020
12 comments
12,661 views