pl sql datetime format
PL SQL Datetime 형식과 Datetime, Timestamp 및 Interval과 관련된 몇 가지 유용한 기능에 대해 알아보십시오.
에서 PL / SQL 트리거 에 PL SQL 시리즈 , 우리는 그들의 유형, 사용법 및 장점에 대해 배웠습니다.
이 기사에서는 PL / SQL의 날짜 및 시간과 Datetime, Timestamp 및 Interval 데이터 유형의 일부 함수를 살펴 봅니다. 또한 Datetime 및 Interval에 대한 몇 가지 기본 작업을 수행합니다.
토론부터 시작하겠습니다 !!
학습 내용 :
PL SQL 날짜 / 시간 형식
PL / SQL에는 날짜, 간격 및 시간을 유지하고 계산할 수있는 날짜 / 시간 데이터 유형이 있습니다. 날짜 또는 시간 유형의 변수에는 DateTime이라는 값이 있습니다. 간격 데이터 유형을 유지하는 변수를 간격이라고합니다. 이러한 각 데이터 유형에는 값을 설정하는 필드가 있습니다.
DateTime 데이터 유형은 다음과 같습니다.
- 타임 스탬프
- 시간대가있는 타임 스탬프
- 현지 시간대가있는 타임 스탬프
- 데이트
간격 데이터 유형은 다음과 같습니다.
- INTERVAL DAY TO SECOND
- INTERVAL YEAR TO MONTH
데이트
고정 길이 날짜 시간은 데이터 유형 DATE에 저장됩니다. 자정부터 초 단위의 시간으로 구성됩니다. 날짜 섹션은 이번 달의 1 일을 가리키고 시간 섹션은 자정을 가리 킵니다. 숫자 및 문자 데이터 유형 모두에서 날짜 및 시간 정보를 보유합니다.
SYSDATE는 현재 시간과 날짜를 가져 오는 날짜 함수입니다. 적절한 날짜 범위는 BC 4712 년 1 월 1 일부터 AD 9999 년 12 월 31 일까지입니다. 기본 형식 (Oracle 초기화 매개 변수 NLS_DATE_FORMAT에 의해 결정됨)의 문자 값은 PL / SQL에 의해 자연스럽게 DATE 값으로 변환됩니다.
날짜에 더하기 및 빼기와 같은 수학적 연산을 적용 할 수 있습니다. PL / SQL은 일 형식의 정수 리터럴을 해석합니다. 예를 들면 SYSDATE + 1은 내일을 가리 킵니다.
타임 스탬프
타임 스탬프 데이터 유형은 DATE 데이터 유형의 확장입니다. 년, 월,시, 초를 저장하는 데 사용됩니다. 기본 타임 스탬프 형식은 Oracle 초기화 매개 변수 NLS_TIMESTAMP_FORMAT에 의해 결정됩니다.
통사론:
TIMESTAMP((precision))
여기서 정밀도는 필수 매개 변수가 아니며 초 필드의 소수 부분에있는 자릿수 수를 가리 킵니다. 정밀도는 0에서 9 사이의 정수 리터럴이어야합니다. 기본값은 6으로 설정됩니다.
시간대가있는 타임 스탬프
이 데이터 유형은 TIMESTAMP 데이터 유형의 확장이며 시간대 변위를 포함합니다. 시간대 변위는 현지 시간과 협정 세계시 (UTC) 사이의 시간 차이 (시간 및 분)입니다.
시간대 형식의 기본 타임 스탬프는 Oracle 초기화 매개 변수 NLS_TIMESTAMP_TZ_FORMAT에 의해 결정됩니다. 통사론:
TIMESTAMP((precision)) WITH TIME ZONE
여기서 정밀도는 필수 매개 변수가 아니며 초 필드의 소수 부분에있는 자릿수 수를 가리 킵니다. 정밀도는 0에서 9 사이의 정수 리터럴이어야합니다. 기본값은 6으로 설정됩니다.
안드로이드 용 스파이 앱 목록
기호로 시간대를 언급 할 수 있습니다. '미국 / 태평양'과 같은 긴 형식이거나 'PDT'와 같이 짧게 또는 둘 다의 조합 일 수 있습니다. 따라서이 데이터 유형은 지리적 위치에서 정보를 포함하고 계산하는 데 사용됩니다.
현지 시간대가있는 타임 스탬프
현지 시간대 데이터 유형이있는 타임 스탬프는 TIMESTAMP 데이터 유형의 확장이며 시간대 변위를 포함합니다. 시간대 변위는 현지 시간과 협정 세계시 (UTC) 사이의 시간 차이 (시간 및 분)입니다.
통사론:
TIMESTAMP ((precision)) WITH LOCAL TIME ZONE
여기서 정밀도는 필수 매개 변수가 아니며 초 필드의 소수 부분에있는 자릿수 수를 가리 킵니다. 정밀도는 0에서 9 사이의 정수 리터럴이어야합니다. 기본값은 6으로 설정됩니다.
TIMESTAMP WITH LOCAL TIME ZONE은 데이터베이스에 값을 삽입하는 동안 값이 데이터베이스의 시간대로 설정되고 시간대 변위가 데이터베이스 열에 유지되지 않기 때문에 TIMESTAMP WITH TIME ZONE과 다릅니다. 그러나 값을 가져 오면 로컬 시간대 세션에서 반환됩니다.
INTERVAL YEAR TO MONTH
이 데이터 유형은 년 및 월 간격을 저장하고 계산하는 데 사용됩니다.
통사론:
INTERVAL YEAR ((precision)) TO MONTH
여기서 정밀도는 연도 필드의 자릿수입니다. 정밀도는 0에서 4 사이의 정수 리터럴이어야합니다. 기본값은 2로 설정됩니다.
간격 연초
Interval year to second 데이터 유형은 일, 시간, 분 및 초 간격을 저장하고 계산하는 데 사용됩니다.
통사론:
INTERVAL DAY ((l_precision)) TO SECOND ((fractional_s_precision))
여기, l_precision 과 fractional_s_precision 각각 일 및 초 필드의 자릿수입니다.
정밀도는 0에서 9까지의 정수 리터럴이어야합니다. 기본값은 각각 2와 6으로 설정됩니다.
필드 값 : 날짜 및 간격
- 둘째: 유효한 DateTime 범위의 값은 00에서 59.9 (m)까지입니다. 여기서 m은 시분 수 초를 나타냅니다. 유효한 간격 범위의 값은 00에서 59.9 (m)까지입니다. 여기서 m은 소수 간격 초를 나타냅니다.
- 분: 유효한 DateTime 범위의 값은 00에서 59까지입니다. 유효한 간격 범위의 값은 0에서 59까지입니다.
- 시: 유효한 DateTime 범위 값은 00-23입니다. 유효한 간격 범위 값은 0-23입니다.
- 일: 유효한 DateTime 범위의 값은 01에서 31까지입니다 (로케일 달력의 규칙에 따라 YEAR 및 MONTH 값으로 제한됨). 유효한 간격 범위의 값은 0이 아닌 정수입니다.
- 달: 유효한 DateTime 범위의 값은 01에서 12까지입니다. 유효한 간격 범위의 값은 0에서 11까지입니다.
- 년: 유효한 DateTime 범위의 값은 0 년을 제외하고 -4712에서 9999까지입니다. 유효한 간격 범위의 값은 0이 아닌 정수입니다.
- TIMEZONE_HOUR : 유효한 DateTime 범위의 값은 -12에서 14까지이며 일광 절약 시간 변경을 포함합니다. 유효한 간격 범위에는 적용되지 않습니다.
- TIMEZONE_MINUTE : 유효한 DateTime 범위의 값은 00에서 59까지입니다. 유효한 간격 범위에는 적용 할 수 없습니다.
- TIMEZONE_REGION : 유효한 DateTime 범위의 값은 DATE 또는 TIMESTAMP에 적용 할 수 없습니다. 유효한 간격 범위에는 적용 할 수 없습니다.
- TIMEZONE_ABBR : 유효한 DateTime 범위의 값은 DATE 또는 TIMESTAMP에 적용 할 수 없습니다. 유효한 간격 범위에는 적용되지 않습니다.
Datetime의 PL SQL 함수
여기서 m과 n은 날짜 시간 값을 포함합니다.
연결 목록 자습서 C ++
Sl 아니. | 이름 | 목적 |
---|---|---|
7 | SYSDATE () | 현재 날짜 시간을 가져옵니다. |
1 | LAST_DAY (분) | 해당 월의 마지막 날을 가져옵니다. |
두 | ADD_MONTHS (m, n) | m 개월과 n 개월을 합산합니다. |
삼 | MONTHS_BETWEEN (m, n) | m과 n 사이의 개월 수를 가져옵니다. |
4 | NEXT_DAY (분, 일) | m 이후 다음 날의 날짜 시간을 가져옵니다. |
5 | NEXT_TIME | 사용자가 요청한 시간대에서 시간 / 일을 가져옵니다. |
6 | ROUND (m (, unit)) | 반올림 m. |
8 | TRUNC (m (, unit)) | m을 자릅니다. |
타임 스탬프의 PL SQL 함수
여기서 m에는 타임 스탬프의 값이 포함됩니다.
Sl 아니. | 이름 | 목적 |
---|---|---|
7 | TO_TIMESTAMP_TZ (m, (형식)) | 문자열 m을 TIMESTAMP WITH TIMEZONE으로 변환합니다. |
1 | CURRENT_TIMESTAMP () | 현재 세션 및 세션 시간대가있는 TIMESTAMP WITH TIMEZONE을 가져옵니다. |
두 | FROM_TZ (m, 시간대) | m TIMESTAMP를 변환하고 time_zone을 TIMESTAMP WITH TIMEZONE으로 언급합니다. |
삼 | LOCALTIMESTAMP () | 세션 시간대의 현지 시간을 갖는 TIMESTAMP를 가져옵니다. |
4 | SYSTEMTIMESTAMP () | 현재 데이터베이스 시간과 데이터베이스 시간대가있는 TIMESTAMP WITH TIMEZONE을 가져옵니다. |
5 | SYS_EXTRACT_UTC (m) | m TIMESTAMP WITH TIMEZONE을 날짜 및 시간이 UTC 인 TIMESTAMP로 변환합니다. |
6 | TO_TIMESTAMP (m, (형식)) | 문자열 m을 TIMESTAMP로 변환합니다. |
Datetime 및 Timestamp 함수를 사용한 코드 구현 :
BEGIN /* get the current date and time */ DBMS_OUTPUT.put_line ('The output of SYSDATE is:'|| SYSDATE); /* get the TIMESTAMP WITH TIME ZONE with database time and time zone */ DBMS_OUTPUT.put_line ('The output of SYSTIMESTAMP is:' ||SYSTIMESTAMP); /* get the TIMESTAMP with local time in session time zone */ DBMS_OUTPUT.put_line ('The output of LOCALTIMESTAMP:' ||LOCALTIMESTAMP); /*get the TIMESTAMP WITH TIME ZONE with present session time with session time zone */ DBMS_OUTPUT.put_line ('The output of CURRENT_TIMESTAMP:'||CURRENT_TIMESTAMP); /*convert string to TIMESTAMP*/ DBMS_OUTPUT.put_line ('The output of TIMESTAMP:'||TO_TIMESTAMP('12-JAN-2011')); /*to add months*/ DBMS_OUTPUT.put_line ('The output of ADD_MONTHS:'||ADD_MONTHS(SYSDATE,1)); /*to get date and time of following day*/ DBMS_OUTPUT.put_line ('The output of NEXT_DAY:'||NEXT_DAY(SYSDATE,'MONDAY')); /*to truncate date */ DBMS_OUTPUT.put_line ('The output of TRUNC:'||TRUNC(SYSDATE)); /*to get the last day of month */ DBMS_OUTPUT.put_line ('The output of LAST_DAY:'||LAST_DAY (SYSDATE)); END; /
위 코드의 출력 :
간격의 PL SQL 함수
Sl 아니. | 이름 | 목적 |
---|---|---|
1 | NUMTODSINTERVAL (m, 간격) | 숫자 m을 INTERVAL DAY TO SECOND로 변환합니다. |
두 | NUMTOYMINTERVAL (m, 간격) | 숫자 m을 INTERVAL YEAR TO MONTH로 변환합니다. |
삼 | TO_DSINTERVAL (m) | 문자열 m을 INTERVAL DAY TO SECOND로 변환합니다. |
4 | TO_YMINTERVAL (m) | 문자열 m을 INTERVAL YEAR TO MONTH로 변환합니다. |
날짜 시간 및 간격의 산술 연산
PL / SQL을 사용하면 DateTime 및 간격 표현식을 생성 할 수 있습니다.
적용 할 수있는 연산자 목록은 다음과 같습니다.
- 첫 번째 피연산자가 DateTime이고 두 번째 피연산자가 간격이고 여기에 (+) 연산자를 적용하려는 경우 결과 값은 DateTime 유형입니다.
- 첫 번째 피연산자가 DateTime이고 두 번째 피연산자가 간격이고 여기에 (-) 연산자를 적용하려는 경우 결과 값은 DateTime 유형입니다.
- 첫 번째 피연산자가 간격이고 두 번째 피연산자가 DateTime이고 여기에 (+) 연산자를 적용하려는 경우 결과 값은 DateTime 유형입니다.
- 첫 번째 피연산자가 DateTime이고 두 번째 피연산자가 DateTime이고 여기에 (-) 연산자를 적용하려는 경우 결과 값은 간격 유형입니다.
- 첫 번째 피연산자가 간격이고 두 번째 피연산자가 간격이고 여기에 (+) 연산자를 적용하려는 경우 결과 값은 간격 유형입니다.
- 첫 번째 피연산자가 간격이고 두 번째 피연산자가 간격이고 여기에 (-) 연산자를 적용하려는 경우 결과 값은 간격 유형입니다.
- 첫 번째 피연산자가 간격이고 두 번째 피연산자가 숫자이고 여기에 (*) 연산자를 적용하려는 경우 결과 값은 간격 유형입니다.
- 첫 번째 피연산자가 숫자이고 두 번째 피연산자가 간격이고 여기에 (*) 연산자를 적용하려는 경우 결과 값은 간격 유형입니다.
- 첫 번째 피연산자가 간격이고 두 번째 피연산자가 숫자이고 여기에 (/) 연산자를 적용하려는 경우 결과 값은 간격 유형입니다.
Datetime 및 Interval의 일부 산술 연산으로 코드 구현.
DECLARE c_dt TIMESTAMP; r_dt TIMESTAMP; s_dt TIMESTAMP; BEGIN c_dt := SYSTIMESTAMP; r_dt:= c_dt + TO_DSINTERVAL ('1600 5:20:1'); DBMS_OUTPUT.PUT_LINE ('Addition of datetime and Interval:' ||r_dt); s_dt:= c_dt - TO_DSINTERVAL ('1600 5:20:1'); DBMS_OUTPUT.PUT_LINE ('Subtraction of datetime and Interval:' || s_dt); END;
위 코드의 출력 :
위 코드에 대한 설명 :
- 코드에서 (‘1600 5 : 20 : 1’)은 1600 일 5 시간 20 분 1 초를 의미합니다. .
- 첫 번째 출력에서 첫 번째 피연산자는 DateTime이고 두 번째 피연산자는 간격입니다. 그것들을 추가 할 때 우리는 오전 시간과 함께 24-DEC로 날짜를 얻었습니다.
- 두 번째 출력에서 첫 번째 피연산자는 DateTime이고 두 번째 피연산자는 간격입니다. 두 번째에서 첫 번째를 뺄 때 우리는 오후 시간과 함께 20MAR로 날짜를 얻었습니다.
자주 묻는 질문과 답변
Q # 1) 현재 타임 스탬프는 무엇입니까?
대답: 현재 타임 스탬프 또는 CURRENT_TIMESTAMP는 서버에서 SQL 문을 실행하는 동안 하루 시계 시간 읽기에 의존하는 타임 스탬프를 설명합니다.
Q # 2) Sysdate는 Oracle에서 무엇을 반환합니까?
대답: Sysdate () 함수는 데이터베이스가있는 운영 체제에 구성된 현재 날짜와 시간을 가져옵니다. 리턴되는 값의 데이터 유형은 DATE입니다.
Q # 3) 현재 시스템 날짜 및 시간을 제공하는 PL / SQL 함수는 무엇입니까?
대답: 현재 시스템 날짜 및 시간을 제공하는 PL / SQL 함수는 SYSDATE ()입니다.
Q # 4) DUAL SQL이란 무엇입니까?
대답: DUAL은 기본적으로 데이터 사전과 함께 Oracle에서 생성하는 데이터베이스 테이블입니다. 하나의 행과 하나의 열이 있습니다. DUAL은 SYS가 소유하지만 모든 사용자가 사용할 수 있습니다.
Q # 5) PL SQL에서 날짜 변수를 어떻게 선언합니까?
대답: 아래 주어진 구문을 사용하여 PL / SQL에서 날짜 변수를 선언 할 수 있습니다.
DECLARE stdt DATE := to_date ('06/06/2006', 'DD/MM/YYYY');
Q # 6) Oracle의 날짜 형식은 무엇입니까?
대답: 입력 및 출력에 대한 Oracle의 표준 날짜 형식은 'DD / MON / YY'입니다. 이는 NLS_DATE_FORMAT 매개 변수의 값으로 구성됩니다.
결론
이 PL SQL 날짜 / 시간 형식 자습서에서는 프로그래밍에서 사용하는 데 필수적인 PL / SQL 날짜 및 시간의 몇 가지 기본 개념을 자세히 설명했습니다.
아래에 나열된 다음 주제를 다루었습니다.
- 날짜와 시간.
- Datetime, Timestamp 및 Interval 관련 기능.
- Datetime 및 Interval에 대한 산술 연산.
- Datetime 및 Interval의 필드 값.