Oracle: where 절에서 날짜 및 시간별로 필터링하는 방법
어떻게 해야 합니까?
select *
from tableName
where SESSION_START_DATE_TIME > To_Date ('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi' )
SESSION_START_DATE_TIME 형식은 '12/01/2012 13:16:32.000'입니다.
나는 노력했다.where To_Date (SESSION_START_DATE_TIME, 'DD-MON-YYYY hh24:mi') > To_Date ('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi' )
하지만 어떤 시도를 해도 오류가 발생합니다.SQL command not properly formed
당신이 제공한 예에서, 어떤 것도 그것을 던지지 않을 것입니다.SQL command not properly formed
오류입니다. 이 쿼리를 어떻게 실행하고 있습니까?안 보여주는 게 뭐예요?
이 예제 스크립트는 정상적으로 작동합니다.
create table tableName
(session_start_date_time DATE);
insert into tableName (session_start_date_time)
values (sysdate+1);
select * from tableName
where session_start_date_time > to_date('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi');
이 예와 마찬가지로:
create table tableName2
(session_start_date_time TIMESTAMP);
insert into tableName2 (session_start_date_time)
values (to_timestamp('01/12/2012 16:01:02.345678','mm/dd/yyyy hh24:mi:ss.ff'));
select * from tableName2
where session_start_date_time > to_date('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi');
select * from tableName2
where session_start_date_time > to_timestamp('01/12/2012 14:01:02.345678','mm/dd/yyyy hh24:mi:ss.ff');
그래서 뭔가 잘못된 것이 분명합니다.
SESSION_START_DATE_TIME이 TIMESTAMP 유형인 경우 SQL 함수 TO_TIMESTAMP를 사용해 보십시오.다음은 예입니다.
SQL> CREATE TABLE t (ts TIMESTAMP);
Table created.
SQL> INSERT INTO t
2 VALUES (
3 TO_TIMESTAMP (
4 '1/12/2012 5:03:27.221008 PM'
5 ,'mm/dd/yyyy HH:MI:SS.FF AM'
6 )
7 );
1 row created.
SQL> SELECT *
2 FROM t
3 WHERE ts =
4 TO_TIMESTAMP (
5 '1/12/2012 5:03:27.221008 PM'
6 ,'mm/dd/yyyy HH:MI:SS.FF AM'
7 );
TS
-------------------------------------------------
12-JAN-12 05.03.27.221008 PM
이렇게 말하자.
where ("R"."TIME_STAMP">=TO_DATE ('03-02-2013 00:00:00', 'DD-MM-YYYY HH24:MI:SS')
AND "R"."TIME_STAMP"<=TO_DATE ('09-02-2013 23:59:59', 'DD-MM-YYYY HH24:MI:SS'))
여기서 R은 테이블 이름입니다.
TIME_STAMP는 표 R의 필드 이름입니다.
시도:
To_Date (SESSION_START_DATE_TIME, 'MM/DD/YYYY hh24:mi') >
To_Date ('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi' )
분명히 '12/01/2012 13:16:32.000'은 'DD-MON-YYYH24:mi' 형식과 일치하지 않습니다.
업데이트:
'MM/DD/YYYh24:mi:ss.ff' 형식이 필요하며, oracle에서 날짜가 millis를 보유하지 않기 때문에 TO_DATE 대신 TO_TIM 스탬프를 사용해야 합니다.
언급URL : https://stackoverflow.com/questions/8839008/oracle-how-to-filter-by-date-and-time-in-a-where-clause
'programing' 카테고리의 다른 글
알려진 상위 패키지가 없는 상대 가져오기 시도 (0) | 2023.07.15 |
---|---|
ggplot2에서 x 및 y 축 레이블 추가 (0) | 2023.07.15 |
java.sql.SQL 예외:사용된 결과 집합 (0) | 2023.07.10 |
SQL Server GUID 정렬 알고리즘입니다. 왜죠? (0) | 2023.07.10 |
실제 숫자인 문자열 값을 기준으로 Mongo 정렬 (0) | 2023.07.10 |