Oracle이 전날 기록 가져오기
알겠습니다. 전날이 아니라 전년도를 받는 것 같은데, 전날이 필요합니다.
SELECT TO_DATE(TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD'),'YYYY-MM-DD') - 1 FROM Dual
저는 이 형식의 날짜 스탬프와 비교하고 있으며, 전날의 모든 행을 받고 싶습니다.
YYYY-MM-DD HH:MM:SS
그래서 저는 이런 것을 시도하고 있습니다.
SELECT field,datetime_field
FROM database
WHERE datetime_field > TO_DATE(TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD'),'YYYY-MM-DD') - 1
sysdate는 어때요?
SELECT field,datetime_field
FROM database
WHERE datetime_field > (sysdate-1)
다음을 사용하여 날짜의 시간 부분을 제거할 수 있습니다.TRUNC.
select field,datetime_field
from database
where datetime_field >= trunc(sysdate-1,'DD');
이 쿼리는 어제부터 시작하는 날짜가 포함된 모든 행을 제공합니다.두 번째 인수를 기록합니다.trunc()이를 사용하여 날짜의 일부를 잘라낼 수 있습니다.
datetime_fied에 다음이 포함된 경우'2011-05-04 08:23:54'다음 날짜가 반환됩니다.
trunc(datetime_field, 'HH24') => 2011-05-04 08:00:00
trunc(datetime_field, 'DD') => 2011-05-04 00:00:00
trunc(datetime_field, 'MM') => 2011-05-01 00:00:00
trunc(datetime_field, 'YYYY') => 2011-00-01 00:00:00
SELECT field,datetime_field
FROM database
WHERE datetime_field > (CURRENT_DATE - 1)
오라클에서 일한 지 얼마 안 됐어요.하지만, 저는 이것이 효과가 있을 것이라고 생각합니다.
이것.
SELECT field,datetime_field
FROM database
WHERE datetime_field > (sysdate-1)
효과가 있을 것입니다.질문: 'datetime_field'의 형식이 sysdate와 동일합니까?나의 방법은 'to_char()' 함수를 사용하는 것입니다(오라클에서만 작동).
샘플: 전날:
select your_column
from your_table
where to_char(sysdate-1, 'dd.mm.yyyy')
또는
select extract(day from date_field)||'/'||
extract(month from date_field)||'/'||
extract(year from date_field)||'/'||
as mydate
from dual(or a_table)
where extract(day from date_field) = an_int_number and
extract(month from date_field) = an_int_number and so on..
비교 날짜:
select your_column
from your_table
where
to_char(a_datetime_column, 'dd.mm.yyyy') > or < or >= or <= to_char(sysdate, 'dd.mm.yyyy')
어제와 그저께 사이의 시간 범위:
select your_column
from your_table
where
to_char(a_datetime_column, 'dd.mm.yyyy') > or < or >= or <= to_char(sysdate-1, 'dd.mm.yyyy') and
to_char(a_datetime_column, 'dd.mm.yyyy') > or < or >= or <= to_char(sysdate-2, 'dd.mm.yyyy')
기타 시간 범위 변동
select your_column
from your_table
where
to_char(a_datetime_column, 'dd.mm.yyyy') is between to_char(sysdate-1, 'dd.mm.yyyy')
and to_char(sysdate-2, 'dd.mm.yyyy')
간단한 솔루션 및 이해
질문에 대답하기
SELECT field,datetime_field
FROM database
WHERE TO_CHAR(date_field, 'YYYYMMDD') = TO_CHAR(SYSDATE-1, 'YYYYMMDD');
약간의 설명
날짜 형식이 아니지만 날짜를 사용하여 비교하려는 필드가 있는 경우(예: 20190823(YYYMMDD) 필드는 날짜로 간주되지만 숫자 형식입니다.
SELECT * FROM YOUR_TABLE WHERE ID_DATE = TO_CHAR(SYSDATE-1, 'YYYYMMDD')
날짜/시간 스탬프 형식의 필드가 있고 비교해야 할 경우 형식을 변경합니다.
SELECT TO_CHAR(SYSDATE-1, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL
날짜 형식으로 되돌리려면
SELECT TO_DATE(TO_CHAR(SYSDATE-1, 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') AS NEW_DATE FROM DUAL
결론.
이러한 지식을 바탕으로 비교하고자 하는 파일을 YYYYMMDD, YYY-MM-DD 또는 년-월-일 형식과 비교하여 동일한 시스템 날짜 형식으로 변환할 수 있습니다.
다음 명령도 실행할 수 있습니다.
듀얼에서 (sysdate-1) PREVIDE_DATE를 선택합니다;
저는 이 부분에 대해 "TO_DATE(TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD')", 'YYYY-MM-DD'에 대해 조금 혼란스럽습니다.당신은 이 조항으로 무엇을 하려고 했습니까?DUAL에서 날짜를 가져오는 기본 쿼리를 실행할 때 결과에 표시되는 형식이 기본 형식입니다.그 외에는 당신의 쿼리에서 이 작업을 수행했고 전날 'SELECT (CURENT_DATE - 1) FROM Dual'을 검색했습니다.문제가 해결되면 알려주시고 해결되지 않으면 문제에 대해 말씀해주세요.감사합니다. 좋은 일만 가득하세요.
언급URL : https://stackoverflow.com/questions/2555392/oracle-get-previous-day-records
'programing' 카테고리의 다른 글
| Chrome localhost 쿠키가 설정되지 않음 (0) | 2023.07.13 |
|---|---|
| iOS 스크린샷 탐지? (0) | 2023.07.13 |
| git 저장소에서 병합한 후 .orig 파일을 삭제하는 방법은 무엇입니까? (0) | 2023.07.13 |
| 다른 행을 기준으로 행 필터링 (0) | 2023.07.13 |
| VS 코드 작업 공간에서 기호로 이동 - 외부 파일 제외 (0) | 2023.07.13 |