시간 없이 날짜만 알고 표에서 선택(ORACLE)
열에 날짜와 시간이 포함된 날짜를 알고 테이블에서 레코드를 검색하려고 합니다.
테이블이 있다고 가정해봅시다t1
두 개의 열만 포함되어 있습니다.name
그리고.date
각각 다음과 같다.
다음과 같이 열 날짜에 저장된 데이터8/3/2010 12:34:20 PM
.
예를 들어 이 쿼리를 통해 이 레코드를 가져오고 싶습니다(시간을 입력하지 않습니다).
Select * From t1 Where date="8/3/2010"
이 질문에는 아무것도 없어요!
취득 방법date
아는 것만으로date
시간 없이?
DATE
Oracle에서는 예약된 키워드이기 때문에 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
'programing' 카테고리의 다른 글
분류법별로 사용자 지정 게시 유형에 대한 영구 링크 정의 (0) | 2023.04.02 |
---|---|
reactjs에서 소품은 값으로 통과합니까, 아니면 참조로 통과합니까? (0) | 2023.04.02 |
로드하는 동안 진행 표시줄을 표시하는 방법, Ajax 사용 (0) | 2023.04.02 |
오류: 파일 'wp-config'입니다.php'는 이미 존재합니다. (0) | 2023.04.02 |
json 파일에서 값을 업데이트하고 node.js를 통해 저장하는 방법 (0) | 2023.04.02 |