2013-05-16 3 views
-1

현재 날짜가있는 모든 행 수를 가져 오려고합니다.타임 스탬프에서 날짜를 검색하는 방법 - sql

Column name = LOGIN_TIME (format is TIMESTAMP) 

는 지금은 USER_NAMESUBJECT 값이 있습니다.

테이블 구조는 :

USER_NAME SUBJECT LOGIN_TIME 
----------------------------------- 
abc   physics 01-MAY-13 12.27.50.863000000 AM 
abc   math  02-MAY-13 01.01.47.863000000 PM 
def   physics 16-MAY-13 06.42.48.863000000 PM  
abc   physics 16-MAY-13 02.29.11.863000000 PM 

이제 user_name='aaa'subject = 'physics'current date (of REQUEST_TIME)으로, 나는 행의 수를 retreive 싶다.

이 쿼리로 도움을주십시오.

+0

* 수정 : USER_NAME = 'abc'및 주제 = 'physics' – user2388729

답변

0

이 쿼리는 작업을 수행해야합니다. Table_name을 테이블의 실제 이름으로 바꿉니다.

SELECT Count(*) FROM Table_Name WHERE USER_NAME = 'abc' AND SUBJECT = 'physics' AND TRUNC(LOGIN_TIME) >= TRUNC(SYSDATE - 1) 
+0

답변 해 주셔서 감사합니다. 그러나 oracle sql 개발자에서이 스크립트를 실행할 때 오류가 발생합니다. 명령 줄 1에서 시작하는 중에 오류가 발생했습니다. SELECT count (*) FROM table_name where user_name = 'abc'AND subject = 'physics'AND login_time (timestamp) = 날짜 (NOW()) 명령 줄에서 오류 :이 칼럼 : 51 오류 보고서 : SQL 오류 : ORA-00936 :없는 표현 00936. 00000 - "실종 표현" * 원인 : * 작업 : – user2388729

+0

않았다 당신은 Table_name을 변경합니까? –

+1

@ user2388729 : 대답은 오라클에 유효하지 않으며 처음부터 바로 언급 했어야하는 Oracle **을 사용하고 있음이 분명해지기 전에 게시되었습니다 **. 'now()'는 SQL Server 나 MySQL을위한 것임을 나타냅니다. 그러나 내가 잘못하지 않는다면 어떤 데이터베이스에서도'LOGIN_TIME (timestamp)'표현은 유효하지 않습니다. –

2

SQL Developer에서 질문에 태그를 추가 했으므로 오라클을 사용하고 있다고 가정합니다.

그런 경우 trunc() 함수를 사용하여 타임 스탬프 (또는 date) 열의 시간 부분을 "제거"할 수 있습니다. "제거"는 00:00:00으로 설정됨을 의미합니다. 또한 결과이 같은 것, 그런 말로 미루어 보아 (current_date 포함) 모두 같은 current_date, sysdate 또는 current_timestamp이 작업을 수행 그들

와 시간을 수행해야합니다

select count(*) 
from the_table 
where user_name = 'abc' 
    and subject = 'physics' 
    and trunc(login_time) = trunc(current_date) 
+0

Blimey! 고맙습니다 :) – user2388729

관련 문제