"1832-09-02" 형식에는 "9-2-1832" 형식의 문자열이 필요합니다. mysql에서 "날짜" 유형 필드를 채울 수 있어야 합니다.
답변1
추가 도구를 허용하면(mysql 태그를 모두 지정한 후) 다음을 사용할 수 있습니다.날짜 유틸리티 패키지:
$ dateconv -i %m-%d-%Y "9-2-1832"
1832-09-02
차이점은 GNU date
형식 지정자(매개변수)를 사용하여 입력 형식을 지정할 수 있다는 것입니다 -i
. 이 방법으로 모든 유형의 날짜를 구문 분석할 수 있습니다.
표준 ISO 8601 형식을 출력으로 사용하기를 원하므로(패키지의 모든 도구에 대한 기본값) 거기에서 아무것도 지정할 필요가 없습니다.
면책 조항: 저는 dateutils의 저자입니다.
답변2
원래 날짜가 월-일-년(1832년 9월 2일)이라고 가정하면 다음과 같이 작동할 수 있습니다.
$ date -d $(sed "s/-/\//g" <<< '9-2-1832') +%Y-%m-%d
1832-09-02
설명하다
현재 8.25 버전에서도 date
명령은 나열된 형식("9-2-1832", 하이픈으로 구분된 월-일-년 날짜 문자열)의 날짜를 허용하지 않습니다.
$ date -d '9-2-1832' +%Y-%m-%d
date: invalid date ‘9-2-1832’
하지만date
~ 할 것이다슬래시로 구분된 월, 일, 연도 날짜 문자열을 허용합니다.
$ date -d '9/2/1832' +%Y-%m-%d
1832-09-02
sed
하이픈을 이와 같은 슬래시로 바꿀 수 있습니다 .
$ sed "s/-/\//g" <<< '9-2-1832'
9/2/1832
sed
그런 다음 해당 명령을 하위 쉘에 넣어 모든 것을 하나로 묶을 수 있습니다.
$ date -d $(sed "s/-/\//g" <<< '9-2-1832') +%Y-%m-%d
1832-09-02