초 단위를 시분초로 변경 하는데 에러가 나서 질문드립니다. 1 3 2,770

by zumsim [SQL Query] [2021.01.30 22:58:28]


초 단위를 시분초로 변경할 때 

TO_CHAR(TO_DATE(초,'sssss'),'hh24:mi:ss')

이렇게 하면 된다고 해서 현재 한 학생의 모든 수업 시간을 SUM()을 통해서 저 초자리에 넣고 돌리는데

시간이 긴 학생들은( 에러가 나더라구요 

예를 들어 제가 테스트 해본건 다섯자리까지는 문제없는데

그 이후로는 날짜형식이 부적합하다고 뜹니다. 

다른 방법이 있나 찾아보니 현재까진 위 방법밖에 못찾아서 약간의 팁을 구하기 위해 질문남깁니다.

감사합니다.

 

by pajama [2021.01.31 01:48:59]

numtodsinterval 함수를 쓰면 어떨까요?

SELECT TO_CHAR( TIMESTAMP'2020-12-31 00:00:00' + NUMTODSINTERVAL(250000, 'SECOND'), 'HH24:MI:SS') FROM DUAL;

 

https://stackoverflow.com/questions/51083401/ora-01830-failure-at-to-date-function-if-the-field-contains-more-than-5-digits

https://stackoverflow.com/questions/970249/format-interval-with-to-char


by zumsim [2021.01.31 23:12:50]

으아 너무 감사합니다ㅜㅜㅜ 왜 저 방법을 못찾았을까요.. 감사합니다ㅜ


by 마농 [2021.02.01 09:10:12]

sssss 는 하루에 해당하는 초까지만 가능합니다. (24*60*60 = 86400, 0 ~ 86399 초)
24시간이 넘어가는 일수에 해당하는 부분을 따로 뽑아야죠.

WITH t AS
(
SELECT 86399 s FROM dual
UNION ALL SELECT 86400 FROM dual
UNION ALL SELECT 86401 FROM dual
)
SELECT s
     , FLOOR(s / (24*60*60)) days
     , TO_CHAR(TO_DATE(MOD(s, 24*60*60), 'sssss'), 'hh24:mi:ss') times
  FROM t
;

 

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