복붙노트

[SQL] 오라클 SQL 날짜에 타임 스탬프로 변환

SQL

오라클 SQL 날짜에 타임 스탬프로 변환

우리는 어떻게 날짜에 타임 스탬프 변환 할 수 있습니까?

표는 타임 스탬프 형식입니다 필드, start_ts있다 :

'05/13/2016 4:58:11.123456 PM'

나는 테이블을 쿼리하고 테이블의 최대 및 최소의 타임 스탬프를 찾아야하지만 난 할 수 아니에요.

Select max(start_ts) 
from db 
where cast(start_ts as date) = '13-may-2016'

그러나 쿼리는 값을 반환하지 않습니다.

날짜에 대한 최대 타임 스탬프를 찾는 제발 도와주세요.

해결법

  1. ==============================

    1.

    CAST(timestamp_expression AS DATE)
    

    예를 들어, 쿼리는 듀얼 FROM SELECT CAST (SYSTIMESTAMP AS의 DATE);

  2. ==============================

    2.대신 TRUNC 및 TO_DATE를 사용해보십시오

    대신 TRUNC 및 TO_DATE를 사용해보십시오

    WHERE
        TRUNC(start_ts) = TO_DATE('2016-05-13', 'YYYY-MM-DD')
    

    다른 방법으로는 사용할 수 있습니다> = 및 <대신 start_ts 열에 기능의 사용을 피하기 위해 :

    WHERE
       start_ts >= TO_DATE('2016-05-13', 'YYYY-MM-DD')
       AND start_ts < TO_DATE('2016-05-14', 'YYYY-MM-DD')
    
  3. ==============================

    3.선택하는 동안이 서식을 사용

    선택하는 동안이 서식을 사용

    to_char(systimestamp,'DD-MON-YYYY')
    

    예 :

    (SYSTIMESTAMP를, 'DD-MON-YYYY') TO_CHAR 선택 이중에서;

  4. ==============================

    4.데이터 형식이 타임 스탬프의 경우, 눈에 보이는 형식은 무관하다.

    데이터 형식이 타임 스탬프의 경우, 눈에 보이는 형식은 무관하다.

    당신은 날짜 또는 TO_CHAR를 사용하여 데이터를 변환하지 않도록해야합니다. 대신) (TO_TIMESTAMP를 사용하여 타임 스탬프 값과 타임 스탬프 데이터를 비교

    WHERE start_ts >= TO_TIMESTAMP('2016-05-13', 'YYYY-MM-DD')
       AND start_ts < TO_TIMESTAMP('2016-05-14', 'YYYY-MM-DD')
    
  5. ==============================

    5.당신은 사용할 수 있습니다 : 선택 TO_DATE (TO_CHAR (DATE_FIELD, '일 / 월 / 년을')) 테이블에서.

    당신은 사용할 수 있습니다 : 선택 TO_DATE (TO_CHAR (DATE_FIELD, '일 / 월 / 년을')) 테이블에서.

  6. ==============================

    6.이 할 수있는 올바른 방법이 될 수 없습니다. 하지만 하위 문자열 기능을 사용하여 문제를 해결했다.

    이 할 수있는 올바른 방법이 될 수 없습니다. 하지만 하위 문자열 기능을 사용하여 문제를 해결했다.

    Select max(start_ts), min(start_ts)from db where SUBSTR(start_ts, 0,9) ='13-may-2016'
    

    사용하여이 나는 최대 및 최소 타임 스탬프를 검색 할 수 있었다.

  7. from https://stackoverflow.com/questions/37559741/convert-timestamp-to-date-in-oracle-sql by cc-by-sa and MIT license