Oracle에서는 "select sysdate from Dual;" 문을 사용하여 시간 형식을 쿼리할 수 있습니다. 이 문은 출력 날짜 형식을 지정하는 데 사용됩니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.
1. Oracle의 시간 형식 데이터 저장
Oracle은 7바이트를 차지하는 특정 저장 형식으로 시간을 저장하며 쿼리에 의해 표시되는 시간과는 아무런 관련이 없습니다. 저장되는 시간에는 연도, 월, 일, 시, 분, 초가 포함됩니다. 최소 정밀도는 초 이하입니다. 따라서 PB 클라이언트 프로그램과 같이 밀리초 수준을 지원하는 일부 프런트엔드 프로그램이 Oracle 데이터베이스에 연결할 때 이 점에 주의해야 합니다. 쿼리 중에 표시되는 시간 형식은 세션 환경에 따라 결정되거나 사용자가 정의하며 데이터베이스와 관련이 없습니다
2. Oracle 시간 표시 형식
일반적으로 클라이언트가 데이터베이스와 연결을 설정한 후 , Oracle은 시간 형식 데이터의 표시 형식이 사용된 문자 집합과 관련된 기본값을 제공합니다. 일반적으로 시, 분, 초 대신 연, 월, 일이 표시됩니다. 예를 들어, us7ascii 문자 세트(또는 기타 영어 문자 세트)를 사용하는 경우 기본 시간 형식은 2003년 1월 28일로 표시되고, zhs16gbk 문자 세트(또는 기타 중국어 문자 세트)를 사용하는 경우 기본 시간 형식은 :2003-January-28로 표시됩니다. 테이블에 데이터를 삽입할 때 변환 기능을 사용하지 않으면 시간 필드의 형식이 세션 환경의 시간 형식을 준수해야 하며, 그렇지 않으면 삽입이 수행되지 않습니다. 현재 세션의 시간 형식을 보려면 다음 SQL 문을 사용할 수 있습니다.
SQL> select sysdate from dual;
3. oracle 테이블에 시간 형식 데이터를 삽입합니다.
oracle 테이블에 시간 형식 데이터를 삽입하는 것은 비교적 번거로운 일입니다. 현재 세션의 시간 형식에 따라 시간 값을 엄격하게 작성하거나 변환 기능을 사용하여 시간 데이터 형식을 사용자 정의합니다. 시간 관련 변환 함수에는 to_char와 to_date라는 두 가지가 있습니다. to_char(시간 값, 시간 형식) 함수는 시간 값을 일반적으로 쿼리에 사용되는 문자열 형식으로 변환합니다. to_date(문자열, 시간 형식)는 형식 문자열을 일반적으로 insert 문에서 사용되는 시간 값으로 변환합니다. 세션에서 날짜 형식을 수정하는 방법
현재 세션에서 날짜 형식을 수정하는 방법은 세 가지가 있다고 합니다. 글로긴을 수정하는 방법은 아직 시도하지 않았습니다. sql 파일이 실제로 가능한지 모르겠습니다. 아래에서 하나씩 설명해보세요.
(1) sql*plusSQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss'에서 현재 세션의 날짜 형식을 수정합니다. : 2003-01-28 15:23:38, 즉 24시간 형식으로 연도 4자리 - 월 2자리 - 일, 공백, 시:분:초 2자리입니다. 이 수정 방법은 현재 세션에만 유효합니다. 이는 현재 sql*plus 창이 아닌 현재 세션에 대한 것입니다. 즉, 이렇게 수정한 후 connect 명령어를 이용하여 다른 사용자로 데이터베이스에 접속하거나, 다른 데이터베이스에 접속하면 날짜 형식이 무효화되어 기본 날짜 형식으로 돌아간다. (2) 레지스트리 수정(Windows 시스템에만 해당) 레지스트리에서 hkey_local_machinesoftwareoraclehome0의 기본 키에 문자열(8i 버전)을 추가합니다. 문자열 이름은 nls_date_format입니다. yyyy-mm-dd hh24:mi:ss와 같이 정의한 다음 sql*plus를 다시 시작합니다. 이 수정 방법은 sql*plus 창에 유효합니다. 즉, 얼마나 많은 sql*plus 창을 열어도 이 시간 형식이 기본값이 됩니다. 서버측 레지스트리 수정은 유효하지 않습니다. 클라이언트측 레지스트리 수정만 유효합니다. (3) $oracle_homesqlplusadmin 디렉터리에 있는 glogin.sql 파일을 수정하세요 이 방법은 시도해본 적이 없어서 감히 함부로 말씀드리지는 못하겠습니다. 이 방법을 아시는 전문가님들의 조언 부탁드립니다.5 날짜 형식 우선순위
특정 환경에서 alter session 명령을 사용하여 레지스트리와 현재 세션을 모두 수정하는 경우 어떤 수정 방법이 효과적인가요? alter session 명령은 유효하며 우선순위가 가장 높습니다. 즉, 현재 클라이언트 환경이 무엇이든, 레지스트리가 어떻게 수정되었는지에 관계없이 alter session 명령을 사용하여 시간 형식을 수정하는 한 수정된 시간 형식이 적용됩니다. 따라서 sql*plus 대화식 쿼리를 직접 사용하거나 시간 형식 데이터를 삽입하는 경우 두 가지 방법을 모두 사용할 수 있습니다. 일괄 삽입 또는 예약 실행을 위해 SQL 파일을 사용하는 경우 시간 데이터를 사용하기 전에 alter session 명령을 사용하여 세션을 수정하여 이 SQL 문의 정상적인 작동이 환경과 관련이 없는지 확인하는 것이 가장 좋습니다. 마찬가지로 프런트엔드 클라이언트 프로그램이 시간 형식의 데이터를 사용해야 하는 경우 사용하기 전에 세션을 수정하거나 to_char 또는 to_date 함수를 사용하여 변환하는 것이 가장 좋습니다(변환 함수 사용을 적극 권장함). 환경에 맞춰 프로그램이 실행되는 일이 없습니다.요약:
오라클 데이터베이스는 시간 유형 데이터, 특히 시간 데이터 계산을 위해 많은 함수를 정의합니다. 이는 매우 편리합니다. 물론 편의를 위한 전제 조건은 오라클의 시간 함수에 익숙하다는 것입니다. 여기서는 시간 유형 데이터를 저장할 때 문자열 유형 필드를 사용하는 사람들을 가끔 봅니다. 시스템 오버헤드, 시간 데이터 계산 또는 시간 데이터 검색의 관점에서 이 접근 방식에 강력히 반대합니다. 월을 시간으로 가져오기, 주를 시간으로 가져오는 등의 데이터는 시간 유형 데이터처럼 직접 저장하는 것만큼 편리하지 않습니다. Oracle의 시간 기능에 익숙하다면 누구나 Oracle 시간 유형 데이터를 좋아할 것입니다. 이는 매우 유연하고 강력합니다. 시간에 대해 생각할 수 있는 거의 모든 작업을 수행할 수 있습니다. 이는 Oracle 시간에 대한 이해에 달려 있습니다. 기능
추천 튜토리얼: "Oracle Video Tutorial"
위 내용은 Oracle에서 시간 형식을 쿼리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!