oracle 날짜조건 질문드립니다. 0 6 11,499

by 너구링 [Oracle 기초] oracle sysdate 날짜 [2018.07.11 17:54:22]


익일 00시00분00초 부터 ~ 현재시간 사이의 데이터를 조회하려고 하는데..

익일 00시00분00초라는걸 oracle에서 어떻게 표시해줘야하나요..

검색키워드를 어떻게 검색해야 제가 원하는 결과를 얻을수있을지 조언 구합니다.

by 우리집아찌 [2018.07.11 17:59:03]
WITH T AS (
SELECT SYSDATE - 2 DT FROM DUAL UNION ALL
SELECT SYSDATE - 1 DT FROM DUAL UNION ALL
SELECT SYSDATE  DT FROM DUAL 
)

SELECT * 
  FROM T
 WHERE DT BETWEEN TRUNC(SYSDATE) AND SYSDATE
 

 


by 너구링 [2018.07.11 19:49:06]

헐..채택이 두개가 안되네요.....감사합니다 ! 공부 많이되었습니다. 


by 마농 [2018.07.11 18:11:00]

익일은 내일인데???
검색 범위(익일 00시00분00초 부터 ~ 현재시간)가 이상하네요?
검색 범위를 명확하게 해주셔야 할 듯 하네요.
1. 익일이 아닌 오늘이거나?(오늘 00시00분00초 부터 ~ 현재시간)
2. 검색 범위의 시작종료가 뒤바뀌거나? (현재시간~익일 00시00분00초)
3. 현재시간의 의미가 익일 동시간대를 의미하거나?(익일 00시00분00초 부터 ~ 익일 현재시간)
그리고 검색 하고자 하는 컬럼의 자료형을 알려주셔야 합니다.
date 형인지? varchar2 형인지?
varchar2 일 경우 어떤 형태로 저장되는지?


by 너구링 [2018.07.11 18:13:10]

아..죄송합니다.

오늘 00 시부터 ~ 현재시간이네요......

데이터 형태는 YYYYMMDDHH24MISS  varchar2형태입니다. 

 


by 마농 [2018.07.11 18:35:28]
-- 1. Trunc 로 시분초 자르기 --
SELECT *
  FROM t
 WHERE dt BETWEEN TO_CHAR(TRUNC(sysdate), 'yyyymmddhh24miss')
              AND TO_CHAR(      sysdate , 'yyyymmddhh24miss')
;
-- 2. 일자만 가져와 '000000' 붙이기 --
SELECT *
  FROM t
 WHERE dt BETWEEN TO_CHAR(sysdate, 'yyyymmdd') || '000000'
              AND TO_CHAR(sysdate, 'yyyymmddhh24miss')
;
-- 3. 일자만 사용해도 무방함. 굳이 '000000' 안붙여도 비교 가능 --
SELECT *
  FROM t
 WHERE dt BETWEEN TO_CHAR(sysdate, 'yyyymmdd')
              AND TO_CHAR(sysdate, 'yyyymmddhh24miss')
;
-- 4. 만약 해당 컬럼이 등록일시라면?(즉, 미래 자료 없다면?, 현재까지 자료만 있다면?)
SELECT *
  FROM t
 WHERE dt >= TO_CHAR(sysdate, 'yyyymmdd')
-- WHERE dt LIKE TO_CHAR(sysdate, 'yyyymmdd') || '%'
;

 


by 너구링 [2018.07.11 19:49:20]

..다양한 예제로.. 감사합니다! 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입