postgresql내부를 사용합니다 모든 날짜/시간 입력 지원에 대한 휴리스틱 파서. 날짜와 시간 문자열로 입력되며 뚜렷한 필드로 나뉩니다. 어떤 종류의 정보가있을 수 있는지에 대한 예비 결정 필드. 각 필드는 해석되고 할당됩니다 숫자 값, 무시 또는 거부. 파서에는 내부가 포함되어 있습니다 몇 달, 일을 포함한 모든 텍스트 필드에 대한 조회 테이블 일주일과 시간대
이 부록에는 이들 내용에 대한 정보가 포함되어 있습니다 조회 테이블 및 파서가 사용하는 단계를 설명합니다. 날짜와 토토 결과 디코딩.
날짜/시간 유형 입력은 모두 디코딩되어 있습니다 다음 절차.
입력 문자열을 토큰으로 나누고 각각 분류합니다 문자열, 토토 결과, 토토 결과대 또는 숫자로서의 토큰.
숫자 토큰에 콜론이 포함 된 경우 (:), 이것은 토토 결과 문자열입니다. 모두 포함하십시오 후속 숫자와 콜론.
숫자 토큰에 대시가 포함 된 경우 (-), 슬래시 (/) 또는 둘 이상의 점 (.), 이것은 날짜 문자열입니다 문자 달이 있습니다.
토큰이 숫자 만 있으면 단일 필드 또는 ISO 8601 연결 날짜 (예 :199901131 월 13 일, 1999) 또는 토토 결과 (예 :14151613066_13097
토큰이 Plus (로 시작하는 경우+) 또는 마이너스 (-), 그러면 토토 결과대 또는 특별 필드.
토큰이 텍스트 문자열 인 경우 가능한 일치 문자열.
토큰에 대한 이진 검색 테이블 조회를 수행하십시오 특수 문자열 (예 :오늘), Day (예 :목요일), 월 (예 :1 월) 또는 소음 단어 (예 :at, on).
필드의 필드 값 및 비트 마스크를 설정합니다. 을 위한 예를 들어, 연도, 월, 날 설정오늘및 추가 토토 결과, 분, 두 번째now.
찾을 수없는 경우 유사한 이진 검색 테이블을 수행하십시오 토큰과 토토 결과대와 일치하는 조회.
아직 찾을 수없는 경우 오류를 던지십시오.
토큰이 숫자 또는 숫자 필드 일 때 :
8 ~ 6 자리가있는 경우, 다른 사람이없는 경우 날짜 필드는 이전에 읽은 다음 해석되었습니다 A로"연결 날짜"(예 :19990118또는990118). 해석 이다yyyymmdd또는yymmdd.
토큰이 3 자리이고 1 년이 있다면 이미 읽은 다음 해를 해석했습니다.
4 ~ 6 자리와 1 년이 이미 읽기, 그런 다음 시간으로 해석하십시오 (HHMM또는HHMMSS).
3 자리 이상이고 날짜 필드가없는 경우 그러나 발견 된 것은 1 년으로 해석되었습니다 (이 세력 나머지 날짜 필드의 YY-MM-DD 주문).
그렇지 않으면 날짜 필드 주문이 가정됩니다 따르십시오Datestyle설정 : MM-DD-YY, DD-MM-YY 또는 YY-MM-DD. 던져 오류 월 또는 일일 필드가없는 경우 범위.
BC가 지정된 경우 연도를 부정하고 하나를 추가하십시오. 내부 저장 용. (해에는 제로가 없습니다 Gregorian 캘린더이므로 기원전 1 년은 숫자로 1 년이됩니다 영.)
BC가 지정되지 않은 경우, 연도 필드가 2 인 경우 길이가 숫자를 한 다음 해를 4 자리로 조정하십시오. 만약에 필드는 70 미만이고 2000을 추가하고 그렇지 않으면 추가하십시오. 1900.
팁 :Gregorian Years AD 1-99가 입력 될 수 있습니다 선행 0과 함께 4 자리를 사용하여 (예 :0099AD 99입니다). 이전의 버전PostgreSQL3 자리 숫자와 단일 자리가 있지만 버전 7.0 규칙이 강화되었습니다 모호성의 가능성을 줄입니다.