2014-01-30 3 views
0

이전 데이터베이스를 가져 오는 작업을 수행하는 중이었습니다. 결과 롤링을보고 있었는데, 12/31/13을 2013 년 12 월 31 일로 변환하는 방법과 이유는 궁금했습니다./31/99 ~ 12/31/1999? (이 경우 "it"은 파이썬의 strftime (% Y/% m/% d) 함수 임)YY에서 YYYY로 날짜 변환 --- 컴파일러/해석자가 올바른 세기를 사용하는 방법을 어떻게 알 수 있습니까?

2050 년에 어떤 일이 발생합니까? 12/31/50의 기록은 기본적으로 2050, 1950 또는 2150으로 해석됩니까?

언어에 따라 다를 수 있으며 특정 세기의 사용을 강요하는 플래그/옵션이 있음을 알고 있습니다. 그러나 명시 적으로 그렇게하지 않으면 기본적으로 판단을 내리는 것이 무엇입니까?

+1

각 언어/데이터베이스는 날짜 변환 규칙을 문서화합니다. 2 자의 연도 형식은 ISO 날짜 형식에서 더 이상 지원되지 않습니다. –

답변

1

컴파일러 관련 문서를 읽어야합니다.

더 중요 : 가능한 한 2 자리 연도를 사용하지 마십시오.!

+0

또 다른 옵션은 2 자리 연도의 범위를 시도하고 데이터베이스에서 할당 한 4 자리 연도를 확인하는 것입니다. –

2

데이터베이스에 따라 다르며 각각 기본 시간 범위가 있습니다. 그래서 501950이되고, 1950-2049하지만 492049된다 :

SQL 서버의 기본 시간 범위입니다.

MySQL과 오라클에서는 그것이 2020을 중심으로, 그래서 어느 해하는 것도 1970-2069

기본값의 모든 것 같습니다되는 2020 년에 가장 가까운 것 PostgreSQL을에 1970-2069

미래 따라서 사용자 정의에 걸쳐입니다 기준이 자주 필요합니다.

두 자리 연도가 혼동 될 수 있으므로 2010-05-07을 입력하고 두 자리 연도로 변경하십시오 (10-05-07)? 아니, 적어도 SQL 서버에서, 05-07-10해야한다 :

SELECT CAST('2010-05-07' AS DATE) -- 2010-05-07 
     ,CAST('10-05-07' AS DATE) -- 2007-10-05 
     ,CAST('05-07-10' AS DATE) -- 2010-05-07 

잘못된 날짜가 쉽게 일반적으로 제공되는 날짜 형식을 결정합니다.

0

대부분의 언어/DBMS에는 기본값이 있지만 세기 휴식을 사용자 정의 값으로 설정할 수 있습니다.

가능하면 문서를 확인해야합니다.