programing

어제 레코드만 선택하려면 어떻게 해야 하나요?

mailnote 2023. 3. 27. 21:25
반응형

어제 레코드만 선택하려면 어떻게 해야 하나요?

이 질문에 대한 답을 찾기 위해 몇 시간 동안 웹을 검색했는데...

현재 가지고 있는 것은 다음과 같습니다.

select  *
from    order_header oh
where   tran_date = sysdate-1

용도:

AND oh.tran_date BETWEEN TRUNC(SYSDATE - 1) AND TRUNC(SYSDATE) - 1/86400

레퍼런스: TRUNC

위의 함수를 호출하다tran_date옵티마이저는 관련된 인덱스(존재하는 인덱스)를 사용할 수 없습니다.Oracle과 같은 일부 데이터베이스는 이러한 상황에서 영향을 최소화하기 위해 데이터에 대한 기능을 수행할 수 있는 기능 기반 인덱스를 지원하지만 IME DBA는 이러한 인덱스를 허용하지 않습니다.그리고 나는 동의한다 - 그들은 이 경우에 정말로 필요하지 않다.

trunc(tran_date) = trunc(sysdate -1)

향후 날짜 지정 트랜잭션을 지원하지 않는 경우 다음과 같은 작업이 가능합니다.

AND oh.tran_date >= trunc(sysdate-1)
to_char(tran_date, 'yyyy-mm-dd') = to_char(sysdate-1, 'yyyy-mm-dd')

이 코멘트는 이 엔트리를 발견했지만 oracle 대신 mysql을 사용하고 있는 독자를 대상으로 합니다.mysql에서 다음 작업을 수행할 수 있습니다.오늘.

SELECT  * 
FROM 
WHERE date(tran_date) = CURRENT_DATE()

어제,

SELECT  * 
FROM yourtable 
WHERE date(tran_date) = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)

어제의 타임스탬프를 사용하고 싶은 경우는, 다음과 같이 실시해 주세요.

(CURRENT_TIMESTAMP - INTERVAL '1' DAY)

언급URL : https://stackoverflow.com/questions/1574565/how-can-i-select-records-only-from-yesterday

반응형