2014-04-22 1 views
3

어떻게하면 SQL 쿼리를 통해 현재 시간 전에 마지막 5 분 레코드를 볼 수 있습니까? 타임 스탬프의 형식은 나도 같은지난 5 분간의 레코드를 어떻게 쿼리 할 수 ​​있습니까?

SELECT Time stamp FROM TABLE 
WHERE S >1 AND SUBSTRING((Time stamp,15,2)-5) 

이 쿼리를 사용

03/25/2014 14:00:00 

당신이 MySQL과를 사용하는 경우 같은

+2

RDBMS의 특징은 무엇입니까? mySQL, SQL Server, Oracle DB2 등? 잠깐 생각 해봐. 문자열 데이터에서 수학합니까? 그것을 타임 스탬프로 유지하고 시간을 가지고 수학을 할 수있는 함수를 찾는 것이 더 좋은 대답 일 것입니다. – xQbert

+0

데이터 추출을위한 ORACLE db 및 간단한 sql 쿼리 – user3559774

답변

1

을 할 수있는 다른 방법이 잘되어 당신의 timestamp 열은 데이터 형식이 datetime 일 수 있습니다.

SELECT Timestamp 
FROM your_table 
WHERE Timestamp >= now() - interval 5 minute 
+0

내가 사용하는 테이블에는 raisetime 필드가 있습니다. 예를 들어 다른 시간 스탬프가 주어지면 현재의 raisetime은 '03/25/2014 14:00 : 00 '. 나는 그것에서 5 분을 빼고 그 전에 기록을보고 싶다. 나는 이것을 할 수있다. – user3559774

1

다음은 oracle에서 5 분 전에 얻는 방법의 예입니다. 시간 소인에서 1 씩 증가하여 1을 뺀 날짜입니다. 그래서 5 분은 5/(24 시간 * 60 분) 일 것입니다.

SELECT sysdate, sysdate-(5/(24*60)) as min_Ago5 from dual 
3
select * 
from the_table 
where timestamp_column <= timestamp '2014-03-25 14:00:00' - interval '5' minute; 

timestamp_column는 데이터 유형 timestamp으로 정의되어 있다고 가정합니다.

now을 중지하고 올바른 데이터 형식을 사용하도록 표를 다시 정의해야합니다.


timestamp '2014-03-25 14:00:00'은 (ANSI SQL 된) 타임 스탬프 리터이다.

이것은 to_timestamp('2014-03-25 14:00:00', 'yyyy-mm-dd hh24:mi:ss')과 동일하지만 타이핑이 적고 여러 DBMS에서 작동하기 때문에 ANSI 리터럴을 선호합니다. 당신의 타임 스탬프는 날짜 열이있는 경우

5

, 당신은 간단하게 수행 할 수 있습니다 timestamp이 문자 열 경우

select t.* 
from table t 
where t.timestamp >= sysdate - 5/(24*60) 

상황이 좀 더 흥미 롭다. 그런 다음 날짜/시간으로 번역해야합니다.

select t.* 
from table t 
where to_date(t.timestamp, 'MM/DD/YYYY HH24:MI:SS') >= sysdate - 5/(24*60) 
관련 문제