programing

시간 없이 날짜만 알고 표에서 선택(ORACLE)

skycolor 2023. 4. 2. 10:09
반응형

시간 없이 날짜만 알고 표에서 선택(ORACLE)

열에 날짜와 시간이 포함된 날짜를 알고 테이블에서 레코드를 검색하려고 합니다.

테이블이 있다고 가정해봅시다t1두 개의 열만 포함되어 있습니다.name그리고.date각각 다음과 같다.

다음과 같이 열 날짜에 저장된 데이터8/3/2010 12:34:20 PM.

예를 들어 이 쿼리를 통해 이 레코드를 가져오고 싶습니다(시간을 입력하지 않습니다).

Select * From t1 Where date="8/3/2010"

이 질문에는 아무것도 없어요!

취득 방법date아는 것만으로date시간 없이?

DATEOracle에서는 예약된 키워드이기 때문에 column-name을 사용하고 있습니다.your_date대신.

인덱스가 있는 경우your_date, 를 사용합니다.

WHERE your_date >= TO_DATE('2010-08-03', 'YYYY-MM-DD')
  AND your_date <  TO_DATE('2010-08-04', 'YYYY-MM-DD')

또는BETWEEN:

WHERE your_date BETWEEN TO_DATE('2010-08-03', 'YYYY-MM-DD')
                    AND TO_DATE('2010-08-03 23:59:59', 'YYYY-MM-DD HH24:MI:SS')

인덱스가 없거나 레코드가 너무 많지 않은 경우

WHERE TRUNC(your_date) = TO_DATE('2010-08-03', 'YYYY-MM-DD')

파라미터가 없는 경우 에서 시간, 분 및 초를 삭제합니다.DATE.


성능이 정말로 중요한 경우 해당 열에 를 표시하는 것을 고려해 보십시오.

CREATE INDEX trunc_date_idx ON t1(TRUNC(your_date));

개인적으로, 저는 보통 다음과 같이 합니다.

select * 
from   t1
where  date between trunc( :somedate )          -- 00:00:00
            and     trunc( :somedate ) + .99999 -- 23:59:59

날짜 열을 올바른 형식으로 변환하고 비교:

SELECT * From my_table WHERE to_char(my_table.my_date_col,'MM/dd/yyyy') = '8/3/2010'

이 부분

to_char(my_table.my_date_col,'MM/dd/yyyy')

문자열은 '8/3/2010'이 됩니다.

between 함수를 사용하여 2010-08-03 00:00:00:000 AND 2010-08-03 23:59:59:000 사이의 모든 레코드를 가져올 수 있습니다.

trunc(my_date,'DD')Oracle에서는 날짜만 알려주고 시간은 알려주지 않습니다.

간단히 이것을 사용하세요.

select * from t1 where to_date(date_column)='8/3/2010'

다음 방법으로 시도해 보세요.

Select * from t1 where date(col_name)="8/3/2010" 

언급URL : https://stackoverflow.com/questions/2399753/select-from-table-by-knowing-only-date-without-time-oracle

반응형