설명하다

설명하다

"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

관련 정보