2012-12-12 2 views
0

클라이언트가 SQL 데이터베이스의 레코드가 업데이트되고 업데이트시 타임 스탬프가 필드에 설정된 서버에 명령을 보낼 때 이제 클라이언트 서버 응용 프로그램을 작성합니다. 하지만 이제는 지난 1 시간 동안 온라인 상태였던 SQL 데이터베이스의 모든 사용자를 타임 스탬프와 함께 읽고 싶습니다.업데이트시 SQL 타임 스탬프 on Java

SELECT username FROM users WHERE lastonline... 

lastonline는 사용자 마지막 업데이트의 타임 스탬프와 함께 필드 :

그래서 이것은 내가 얼마나입니다. 지난 1 시간 동안 온라인 상태인지 확인하는 방법이 없습니다.

도와 주셔서 감사합니다.

답변

1

선택 사용자 이름 사용자로부터 그 기록을 건너 뛸 수 있습니다> = 1의 차이는> "지금 일 - 1시간"lastoinline을 WHERE 경우와 lastoinline < = "현재 날짜"

Date dеNow = new Date(); 
Date веBefore = tdNow; tdBefore.setHours(tdBefore.getHours()-1); 
String query = "SELECT username FROM user WHERE lastonline>='"+(dtBefore.getTime/1000)+"' AND lastonline<='"+(dtNow.getTime/1000)+"' 

는 "

0

현재 시간과 시간 소인 기록의 시간을 비교하십시오.

당신이 사용하는 경우 SQL 서버 :

SELECT DATEPART(hh, GETDATE()) --current 시간

SELECT DATEOART(hh, ColumnStoredInDB) --stored 시간

스포일러 : 차이가있는 경우는 단순히 현재의 시간에서 ColumnStoredInDB을 가지고 < 그 사용자는 지난 1 시간 동안 시스템에있었습니다. 당신이

+0

는'인가 DATEPART' function generic SQL 함수 또는 RDBMS에 고유 한 것입니까? –

+0

RDBMS를 사용하여 질문에 태그를 추가하지 못했지만 SQL Server를 사용하고 있다고 가정 할 때 Oracle 및 다른 공급 업체와 유사 함이 있으므로 사용중인 문서를 참조하십시오. .. – JonH

+0

그물을 언급해서 죄송합니다. – alexj

관련 문제