표 9-27스포츠 토토/시간 값 처리에 사용 가능한 기능을 표시합니다. 다음 하위 섹션에 세부 사항이 나타납니다.표 9-26기본 산술 연산자의 동작을 보여줍니다 (+, *등). 함수 서식에 대해서는를 참조하십시오.섹션 9.8. 당신은해야합니다 스포츠 토토/시간 데이터 유형에 대한 배경 정보에 익숙합니다 에서PostgreSQL : 문서 : 8.4 : 날짜/토토 사이트 유형.
아래에 설명 된 모든 기능 및 연산자Time또는타임 스탬프입력은 실제로 두 가지 변형으로 제공됩니다.시간대가있는 시간또는타임 스탬프 시간대와 함께그리고 가져가는 것이시간 시간대없이또는시간이없는 타임 스탬프 존. 간결하게, 이러한 변종은 별도로 표시되지 않습니다. 또한,+및*운영자는 정류 쌍으로 제공됩니다 (예 : 스포츠 토토 + 정수 및 정수 + 스포츠 토토); 우리는 각각 중 하나만 보여줍니다 그런 쌍.
표 9-26. 스포츠 토토/시간 운영자
운영자 | example | 결과 |
---|---|---|
+ | 스포츠 토토 '2001-09-28' + 정수 '7' | 스포츠 토토 '2001-10-05' |
+ | 스포츠 토토 '2001-09-28' + 간격 '1 시간' | 타임 스탬프 '2001-09-28 01:00:00 ' |
+ | 스포츠 토토 '2001-09-28' + 시간 '03 : 00 ' | 타임 스탬프 '2001-09-28 03:00:00 ' |
+ | 간격 '1 일' + 간격 '1 시간' | 간격 '1 일 01:00:00 ' |
+ | 타임 스탬프 '2001-09-28 01:00' + 간격 '23 시간 ' | 타임 스탬프 '2001-09-29 00:00:00 ' |
+ | Time '01 : 00 ' + 간격'3 시간 ' | Time '04 : 00 : 00 ' |
- | - 간격 '23 시간 ' | 간격 '-23 : 00 : 00' |
- | 스포츠 토토 '2001-10-01'-스포츠 토토 '2001-09-28' | 정수 '3'(일) |
- | 스포츠 토토 '2001-10-01'-정수 '7' | 스포츠 토토 '2001-09-24' |
- | 스포츠 토토 '2001-09-28'-간격 '1 시간' | 타임 스탬프 '2001-09-27 23:00:00 ' |
- | Time '05 : 00 ' - 시간 '03 : 00 ' | Interval '02 : 00 : 00 ' |
- | TIME '05 : 00 ' - 간격'2 시간 ' | Time '03 : 00 : 00 ' |
- | 타임 스탬프 '2001-09-28 23:00'- 간격 '23 시간 ' | 타임 스탬프 '2001-09-28 00:00:00 ' |
- | 간격 '1 일' - 간격 '1 시간' | 간격 '1 일 -01 : 00 : 00 ' |
- | 타임 스탬프 '2001-09-29 03:00'- 타임 스탬프 '2001-09-27 12:00' | 간격 '1 일 15:00:00 ' |
* | 900 * 간격 '1 두번째' | Interval '00 : 15 : 00 ' |
* | 21 * 간격 '1 일' | 간격 '21 일 ' |
* | 이중 정밀도 '3.5' * 간격 '1 시간' | 간격 '03 : 30 : 00 ' |
/ | 간격 '1 시간' / 이중 정밀도 '1.5' | interval '00 : 40 : 00 ' |
표 9-27. 스포츠 토토/시간 기능
기능 | 반환 유형 | 설명 | example | 결과 |
---|---|---|---|---|
Age (타임 스탬프,
타임 스탬프) |
간격 | 인수를 빼고 a"Symbolic"연도를 사용한 결과 달 | Age (Timestamp '2001-04-10', 타임 스탬프 '1957-06-13') | 43 세 9 몬 몬 27 일 |
Age (타임 스탬프) |
간격 | 에서 빼기current_date (자정에) |
시대 (타임 스탬프 '1957-06-13') | 43 년 8 몬 몬 3 일 |
clock_timestamp () |
시간대가있는 타임 스탬프 | 현재 스포츠 토토 및 시간 (명세서 중 변경 실행); 보다섹션 9.9.4 | ||
current_date |
스포츠 토토 | 현재 스포츠 토토; 보다섹션 9.9.4 | ||
current_time |
시간대가있는 시간 | 현재 시간; 보다섹션 9.9.4 | ||
current_timestamp |
시간대가있는 타임 스탬프 | 현재 스포츠 토토 및 시간 (현재 거래 시작); 보다섹션 9.9.4 | ||
date_part (텍스트,
타임 스탬프) |
이중 정밀 | 서브 필드 받기 (동등한Extract ); 보다섹션
9.9.1 |
date_part ( '시간', 타임 스탬프 '2001-02-16 20:38:40') | 20 |
date_part (텍스트,
간격) |
이중 정밀 | 서브 필드 얻기 (Extract ); 보다섹션
9.9.1 |
date_part ( 'Month', Interval '2 년 3 개월) | 3 |
date_trunc (텍스트,
타임 스탬프) |
타임 스탬프 | 지정된 정밀도로 잘린다; 참조 참조섹션 9.9.2 | date_trunc ( '시간', 타임 스탬프 '2001-02-16 20:38:40') | 2001-02-16 20:00:00 |
Extract (필드From타임 스탬프) |
이중 정밀 | 서브 필드를 얻으십시오. 보다섹션 9.9.1 | 추출물 (타임 스탬프에서 시간 '2001-02-16 20:38:40') | 20 |
추출물 (필드From간격) |
이중 정밀 | 서브 필드를 얻으십시오. 보다섹션 9.9.1 | 추출물 (간격에서 월 '2 년 3 개월) | 3 |
Isfinite (스포츠 토토) |
부울 | 유한 스포츠 토토 테스트 (+/- 인피니티가 아님) | isfinite (스포츠 토토 '2001-02-16') | true |
Isfinite (타임 스탬프) |
부울 | 유한 타임 스탬프 테스트 (+/- 인피니티가 아님) | Isfinite (Timestamp '2001-02-16 21:28:30 ') | true |
Isfinite (간격) |
부울 | 유한 간격 테스트 | Isfinite (간격 '4 시간 ') | true |
Justify_Days (간격) |
간격 | 간격을 조정하여 30 일 기간이 있습니다 개월로 표시 | Justify_days (Interval '35 날') | 1 월 5 일 |
Justify_hours (간격) |
간격 | 24 시간 동안 간격을 조정하십시오 일로 표시 | Justify_hours (Interval '27 시간 ') | 1 일 03:00:00 |
Justify_Interval (간격) |
간격 | 사용 간격 조정Justify_Days andJustify_hours , 추가 부호와 함께
조정 |
Justify_Interval (간격 '1 월 -1 시간 ') | 29 일 23:00:00 |
LocalTime |
Time | 현재 시간; 보다섹션 9.9.4 | ||
LocalTimestamp |
타임 스탬프 | 현재 스포츠 토토 및 시간 (현재 트랜잭션 시작); 보다섹션 9.9.4 | ||
now () |
시간대가있는 타임 스탬프 | 현재 스포츠 토토 및 시간 (현재 트랜잭션 시작); 보다섹션 9.9.4 | ||
station_timestamp () |
시간대가있는 타임 스탬프 | 현재 스포츠 토토 및 시간 (현재 문의 시작); 보다섹션 9.9.4 | ||
Timeofday () |
텍스트 | 현재 스포츠 토토와 시간 (keconeclock_timestamp 하지만텍스트String); 보다섹션
9.9.4 |
||
transaction_timestamp () |
시간대가있는 타임 스탬프 | 현재 스포츠 토토 및 시간 (현재 거래 시작); 보다섹션 9.9.4 |
이러한 함수 외에도 SQL겹침운영자가 지원됩니다 :
(start1, end1) 중첩 (start2, end2) (start1, 길이 1) 중첩 (start2, 길이 2)
이 표현식은 두 시간 ( 그들의 종말점) 중첩, 겹치지 않을 때 거짓. 그만큼 엔드 포인트는 스포츠 토토, 시간 또는 시간 쌍으로 지정할 수 있습니다. 우표; 또는 스포츠 토토, 시간 또는 타임 스탬프 다음에 간격.
선택 (스포츠 토토 '2001-02-16', 스포츠 토토 '2001-12-21') 중첩 (스포츠 토토 '2001-10-30', 스포츠 토토 '2002-10-30');결과 :true선택 ( '2001-02-16', 간격 '100 일') 중첩 (스포츠 토토 '2001-10-30', 스포츠 토토 '2002-10-30');결과 :false
추가 할 때간격값으로 (또는 SUPTRANTING an간격값에서) a시간대가있는 타임 스탬프값, 날 구성 요소 발전 (또는 감소) 스포츠 토토시간대가있는 타임 스탬프표시된 수에 의해 날. 일광 절약 시간 절약 시간 변경 (세션 시간과 함께 구역은 DST를 인식하는 시간대에 설정된 경우))간격 '1 일'반드시 그런 것은 아닙니다 동일한간격 '24 시간 '. 예를 들어, 세션 시간대가 설정되어CST7CDT, 시간이 지남에 따라 타임 스탬프 Zone '2005-04-02 12 : 00-07' + 간격 '1 일'생산할 것입니다시간대가있는 타임 스탬프 '2005-04-03 12 : 00-06 '추가 중Interval '24 시간 '동일한 초기타임 스탬프와 함께 시간대생산시간이 지남에 따라 타임 스탬프 Zone '2005-04-03 13 : 00-06', 일광이 변경되므로 시간 절약2005-04-03 02:00정시 존CST7CDT.
참고에 모호성이있을 수 있습니다.달반환age
달이 다르기 때문에 달라야합니다
일수.PostgreSQL's
접근법은 두 스포츠 토토 이전의 월을 사용합니다.
부분 달 계산. 예를 들어,Age ( '2004-06-01', '2004-04-30')4 월에서 사용합니다
생산하다1 월 1 일, May를 사용하는 동안
생산하다1 월 2 일5 월에는 31이 있기 때문입니다
4 월에는 30 일이 있지만
Extract
, date_part
Extract (필드From소스)
Extract
함수 검색
스포츠 토토/시간 값에서 연도 또는 시간과 같은 하위 필드.소스값이어야합니다
유형의 표현타임 스탬프, Time또는간격.
(유형의 표현스포츠 토토타임 스탬프따라서 다음과 같이 사용할 수 있습니다
잘.)필드는 식별자입니다
또는 소스에서 추출 할 필드를 선택하는 문자열
값. 그만큼Extract
함수
유형의 값을 반환이중 정밀도.
다음은 유효한 필드 이름입니다.
세기
Extract (TimeStamp '2000-12-16 12:21:13'); 추출을 선택하십시오.결과 :20추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :21
1 세기는 0001-01-01 00:00:00에서 시작합니다. 그들은 당시 그것을 몰랐지만. 이것 정의는 모든 Gregorian 달력 국가에 적용됩니다. Century Number 0은 없습니다. -1 세기에서 1로갑니다. 세기. 당신이 이것에 동의하지 않으면, 당신의 글을 쓰십시오 불만 : 교황, 로마의 성당 생피기, 바티칸 궁전.
PostgreSQL릴리스 8.0 이전에는 기존의 번호를 따르지 않았습니다 수세기 동안 방금 올해의 필드를 나누었습니다 100.
하루 (월) 필드 (1-31)
추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :16
연도 필드는 10으로 나뉩니다.
추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :200
일요일과 같은 요일 (0) ~ 토요일 (6)
추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :5
참고추출물
의 날
금주의 번호 매기기는의 번호와 다릅니다.to_char (..., 'd')
기능.
올해의 날 (1-365/366)
추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :47
for스포츠 토토and타임 스탬프값, 이후 몇 초 1970-01-01 00:00:00 UTC (음수 일 수 있음); 을 위한간격값, 총 몇 초 간격으로
추출을 선택하십시오 (Timestamp with Time Zone '2001-02-16 20 : 38 : 40-08');.결과 :982384720추출을 선택하십시오 (간격 '5 일 3 시간');결과 :442800
에포크 값을 다시 변환 할 수있는 방법은 다음과 같습니다. 타임 스탬프 :
타임 존 'Epoch' + 982384720을 사용하여 타임 스탬프를 선택하십시오 * 간격 '1 초';
시간 필드 (0-23)
Extract를 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :20
월요일과 같은 요일 (1) ~ 일요일 (7)
Extract (Timestamp의 Isodow '2001-02-18 20:38:40');결과 :7
이것은 동일합니다dow일요일을 제외하고. 이것은와 일치합니다.ISO8601 요일 번호 매기기.
theISO8601 년 스포츠 토토는 (간격에 적용되지 않음)
Extract (Isoyear from Date '2006-01-01');결과 :2005Extract (Isoyear from Date '2006-01-02');결과 :2006
각ISO연도 4 일이 포함 된 주 월요일부터 시작합니다. 1 월, 1 월 초 또는 12 월 말에ISO연도 일 수 있습니다 그레고리 년과 다릅니다. 참조주자세한 내용은 필드
이 필드는 PostgreSQL 릴리스에서 사용할 수 없습니다 8.3 이전.
분수 부품을 포함한 초 필드, 1 000 000을 곱한 것; 여기에는 전체가 포함됩니다 초
추출을 선택하십시오 (Time '17 : 12 : 28.5 '의 마이크로 초);결과 :28500000
밀레니엄
Extract (TimeStamp '2001-02-16 20:38:40'); 추출을 선택하십시오.결과 :3
1900 년대의 몇 년은 2 천년입니다. 그만큼 3 천년은 2001 년 1 월 1 일에 시작되었습니다.
PostgreSQL릴리스 8.0 이전에는 기존의 번호를 따르지 않았습니다 수천 년이지만 방금 올해의 필드를 분할했습니다 1000.
분수 부품을 포함한 초 필드, 1000을 곱합니다. 여기에는 전체가 포함됩니다 초.
추출을 선택하십시오 (Time '17 : 12 : 28.5 '에서 밀리 초);결과 :28500
분 필드 (0-59)
추출을 선택하십시오 (TimeStamp '2001-02-16 20:38:40');결과 :38
for타임 스탬프값, 숫자 한 해의 달 (1-12); 을 위한간격Modulo의 달 수를 평가합니다 12 (0-11)
추출을 선택하십시오 (TimeStamp '2001-02-16 20:38:40');결과 :2추출을 선택하십시오 (매월 '2 년 3 개월');결과 :3추출을 선택하십시오 (매달 간격 '2 년 13 개월');결과 :1
스포츠 토토가 안에
추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :1
분수 부품을 포함한 초 필드 (0- 59[1])
추출을 선택하십시오 (TimeStamp '2001-02-16 20:38:40');결과 :40추출을 선택하십시오 (두 번째 시간 '17 : 12 : 28.5 ');결과 :28.5
몇 초 만에 측정 된 UTC에서 시간대 오프셋. 양수 값은 UTC의 동쪽에있는 시간대에 해당합니다. UTC의 서쪽 구역에 대한 부정적인 값
시간대 오프셋의 시간 구성 요소
시간대 오프셋의 분 구성 요소
그 날이있는 연도의 수. 정의에 따라 (ISO8601), 주 월요일과 첫 주에 몇 주가 시작됩니다. 연도에는 그 해의 1 월 4 일이 포함됩니다. 다시 말해, 1 년의 첫 목요일은 그 해 1 주차입니다.
ISO 정의에서 가능합니다 52 주 또는 53 주의 일부가되는 1 월 초반 전년도, 그리고 12 월 후반 스포츠 토토는 내년 첫 주의 일부. 예를 들어,2005-01-01는 53 번째의 일부입니다 2004 년,2006-01-01는 52 주 중 일부입니다 2005 년, while2012-12-31IS 2013 년 첫 주의 일부. 사용하는 것이 좋습니다. 그만큼Isoyear함께 필드Week일관성을 얻으려면 결과.
추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :7
올해 필드. 없음을 명심하십시오0 AD, So SubcractingBCad몇 년은 조심해야합니다.
추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :2001
theExtract
함수는입니다
주로 계산 처리를위한 것입니다. 서식을 위해
디스플레이 스포츠 토토/시간 값, 참조섹션 9.8.
thedate_part
함수는입니다
전통적으로 모델링IngresSQL-스탠드 함수Extract
:
date_part ( '필드',소스)
여기서필드매개 변수는 이름이 아닌 문자열 값이어야합니다. 유효한
필드 이름date_part
동일Extract
.
date_part를 선택하십시오 ( 'day', timestamp '2001-02-16 20:38:40');결과 :16date_part ( '시간', 간격 '4 시간 3 분'); 선택결과 :4
date_trunc
함수date_trunc
is
개념적으로trunc
숫자에 대한 기능.
date_trunc ( '필드',소스)
소스는 값 표현식입니다 유형타임 스탬프또는간격. (유형의 값스포츠 토토및Time캐스트됩니다 자동으로타임 스탬프또는간격각각.)필드정밀도를 선택합니다 입력 값을 잘라냅니다. 반환 값은 유형입니다타임 스탬프또는간격덜 중요하지 않은 모든 필드 선택한 하나보다 0으로 설정된 것보다 (또는 하루 동안, 월).
유효한 값필드are :
마이크로 초 |
milliseconds |
두 번째 |
Minute |
Hour |
day |
주 |
Month |
Quarter |
년 |
10 년 |
Century |
밀레니엄 |
예 :
date_trunc ( '시간', 타임 스탬프 '2001-02-16 20:38:40'); 선택결과 :2001-02-16 20:00:00date_trunc ( 'year', timestamp '2001-02-16 20:38:40'); 선택결과 :2001-01-01 00:00:00
theat Time Zone구성 허용 타임 스탬프가 다른 시간대로 변환.테이블 9-28변형을 보여줍니다.
표 9-28.시간에 존변형
표현 | 반환 유형 | 설명 |
---|---|---|
타임 스탬프 시간대없이AT TIME ZONEZone | 시간대가있는 타임 스탬프 | 주어진 시간 스탬프 처리시간대가없는as 지정된 시간대에 위치 |
타임 스탬프와 시간대시간대에서Zone | 시간이없는 타임 스탬프 존 | 주어진 타임 스탬프 변환시간대와 함께새로 시간대 지정이없는 시간대 |
시간이 지남에 따라 시간 존시간대에서Zone | 시간대가있는 시간 | 주어진 시간 변환시간대와 함께새로 시간대 |
이 표현에서 원하는 시간대Zone텍스트로 지정할 수 있습니다 문자열 (예 :'PST') 또는 간격으로 (예 :간격 '-08 : 00'). 텍스트에서 케이스, 시간대 이름은 어떤 방식 으로든 지정할 수 있습니다. 설명섹션 8.5.3.
예제 (현지 시간대가pst8pdt) :
타임 스탬프 '2001-02-16 20:38:40'At Time Zone 'MST'; 선택하십시오.결과 :2001-02-16 19:38:40-08타임 존 '2001-02-16 20 : 38 : 40-05'at Time Zone 'MST';로 타임 스탬프를 선택하십시오.결과 :2001-02-16 18:38:40
첫 번째 예제는 시간대가없는 타임 스탬프를 사용합니다. MST 시간 (UTC-7)으로 해석 한 다음 변환됩니다. 디스플레이 용 PST (UTC-8). 두 번째 예제는 타임 스탬프가 필요합니다 EST (UTC-5)에 지정되어 MST의 현지 시간으로 변환합니다. (UTC-7).
함수타임 존
(Zone, 타임 스탬프)와 동일합니다
SQL 구성 구성타임 스탬프시간대에서Zone.
PostgreSQL제공 a 현재와 관련된 값을 반환하는 함수 수 스포츠 토토와 시간. 이 SQL 표준은 모든 리턴 값을 기능합니다 현재 거래의 시작 시간에 따라 :
current_date current_time current_timestamp current_time (정밀) current_timestamp (정밀) 로컬 타임 localtimestamp 로컬 타임 (정밀) LocalTimestamp (정밀)
current_time
및current_timestamp
시간이 지남에 따라 값을 전달합니다
존;로컬 타임
및LocalTimestamp
시간없이 값을 전달합니다
존.
current_time
, current_timestamp
, LocalTime
및LocalTimestamp
선택적으로 a
결과를 반올림하는 정밀 매개 변수
초 분야의 많은 분수 숫자. a
정밀 매개 변수, 결과는 사용 가능한 전체에 제공됩니다.
정도.
일부 예 :
current_time을 선택하십시오;결과 :14:39:53.662522-05current_date; 선택결과 :2001-12-23current_timestamp; 선택결과 :2001-12-23 14:39:53.662522-05current_timestamp (2); 선택결과 :2001-12-23 14:39:53.66-05LocalTimestamp 선택;결과 :2001-12-23 14:39:53.662522
이 함수가 현재의 시작 시간을 반환하기 때문에 거래, 거래 중에 그 값이 변경되지 않습니다. 이것은 기능으로 간주됩니다. 의도는 단일을 허용하는 것입니다. 일관된 개념에 대한 거래"현재"시간, 다중 수정 같은 트랜잭션 내에서 같은 시간 스탬프가 있습니다.
참고 :다른 데이터베이스 시스템이이를 발전시킬 수 있습니다 더 자주 가치.
PostgreSQL도 제공합니다 현재 진술의 시작 시간을 반환하는 함수, 순간의 실제 전류 시간뿐만 아니라 함수 호출됩니다. 비 SQL 표준 시간 기능의 전체 목록 이다:
transaction_timestamp () state_timestamp () clock_timestamp () 시간의 시간 () 지금()
Transaction_TimeStamp ()
is
동등한current_timestamp
,
그러나 반환 내용을 명확하게 반영하도록 지명되었습니다.station_timestamp ()
시작 시간을 반환합니다
현재 진술 중 (보다 구체적으로, 시간
클라이언트로부터 최신 명령 메시지 수신).station_timestamp ()
andTransaction_TimeStamp ()
반환
거래의 첫 명령 중에 동일한 값이지만
후속 명령 중에는 다를 수 있습니다.clock_timestamp ()
실제 전류를 반환합니다
시간, 따라서 단일 SQL 내에서도 가치가 변경됩니다.
명령.TimeOfday ()
is
역사적인PostgreSQL함수. 좋다clock_timestamp ()
,
실제 현재 시간을 반환하지만 형식으로텍스트a가 아닌 문자열시간대가있는 타임 스탬프value.now ()
전통적인PostgreSQL동등한Transaction_TimeStamp ()
.
모든 스포츠 토토/시간 데이터 유형은 특별한 리터럴을 허용합니다. 값now현재 스포츠 토토를 지정하려면 그리고 시간 (다시, 트랜잭션 시작 시간으로 해석). 따라서 다음 세 가지 모두 동일한 결과를 반환합니다.
current_timestamp 선택; 지금 ()을 선택하십시오. 타임 스탬프 '지금'을 선택하십시오. - 기본값과 함께 사용하기에 잘못된
팁 :a 지정기본값조항 기간 테이블 만들기. 시스템이 변환됩니다지금a타임 스탬프AS 상수가 구문 분석 되 자마자 기본값이 가치가 필요하고, 테이블 생성 시간은 사용된! 처음 두 형태는 기본값은 함수 호출이기 때문에 사용됩니다. 따라서 그들은 원하는 불이행의 행동을 줄 것입니다. 행 삽입 시간.
실행을 지연시키는 다음 함수를 사용할 수 있습니다 서버 프로세스 :
pg_sleep (초)
PG_SLEEP
전류를 만듭니다
세션의 과정은 잠을 자게됩니다초초가 경과했습니다.초유형의 값이중 정밀, 따라서 분수 초 지연이 가능합니다
지정됩니다. 예를 들어:
PG_SLEEP (1.5); 선택
참고 :수면의 효과적인 해결 간격은 플랫폼 별입니다. 0.01 초가 일반적입니다 값. 수면 지연은 최소한 지정되었습니다. 다음과 같은 요인에 따라 더 길 수 있습니다 서버로드.
경고 |
세션이 더 많은 자물쇠를 보유하지 않도록하십시오.
전화 할 때 필요한 것보다 |
[1] |
60 도약 초가 작동에 의해 구현되면 체계 |