programing

날짜 시간에서 하루가 아닌 1시간 빼기

itmemos 2023. 8. 10. 18:18
반응형

날짜 시간에서 하루가 아닌 1시간 빼기

나는 있습니다datetime열(MM/DD/YYYY HH:MM:SSAM/PM) 하지만 제가 이렇게 할 수 있습니다.

SELECT MAX(D_DTM)-1 FROM tbl1

...그것은 하루 전으로 거슬러 올라갑니다.하루가 아닌 한 시간을 열에서 제거하려면 어떻게 해야 합니까?

저는 또한 알아차렸습니다.datetime12AM의 레코드는 MM/DD/YYYY 00:00:00이 아니라 MM/DD/YYYY처럼 보입니다. 그게 중요한지 모르겠습니다.

Randy의 대답은 좋지만 다음과 같은 간격을 사용할 수도 있습니다.

SELECT MAX(D_DTM)- interval '1' hour FROM tbl1

예 - 날짜는 정수일 단위입니다.

만약 당신이 몇 시간을 원한다면 당신은 약간의 수학을 할 필요가 있습니다 - 예를 들면.-(1/24)

또는 를 사용합니다.INTERVAL기능.그것은 같은 결과를 가지고 있지만 나는 그것이 더 명확하게 읽힌다고 생각합니다 - 물론 그것은 단지 의견일 뿐입니다 :)

SELECT MAX(D_DTM) - INTERVAL '1' HOUR FROM tbl1

좋은 점은INTERVAL함수는 다음을 처리할 때 간격을 년, 월, 일, 시간, 분 또는 초로 만들 수 있습니다.DATE값(월말 날짜를 처리할 때 월 간격이 까다로울 수 있음).

그리고 네, 그 주변의 인용구.1이 예에서는 를 입력해야 합니다.

또한 오라클 전용 시스템을 사용할 수 있습니다.NumToDSInterval상수 대신 변수를 받아들이기 때문에 덜 표준적이지만 더 유연한 함수:

SELECT MAX(D_DTM) - NUMTODSINTERVAL(1, 'HOUR') FROM tbl1
select sysdate - numtodsinterval(1,'hour') from dual

간단합니다.

sysdate - 5/(24*60*60) --> 시스템 시간에서 5초를 뺍니다.

sysdate - 5/(24*60) --> 시스템 시간에서 5분을 뺍니다.

sysdate - 5/(24) --> 시스템 시간에서 5시간을 뺍니다.

이런 이유로

이중에서 (날짜 - (1/24)) 선택

구간을 사용하는 또 다른 방법은 다음과 같습니다.

NUMTODSINTERVAL( number, expression )

NUMTODSINTERVAL(150, 'DAY')
NUMTODSINTERVAL(1500, 'HOUR')
NUMTODSINTERVAL(15000, 'MINUTE')
NUMTODSINTERVAL(150000, 'SECOND')

INTERVAL을 사용하는 것이 효과가 없는 상황에 유용하기 때문에 이 문제를 제기합니다.

언급URL : https://stackoverflow.com/questions/16084484/subtract-one-hour-from-datetime-rather-than-one-day

반응형