복붙노트

[SQL] MySQL의 - 장소 날짜 유형 변경 날짜 문자열?

SQL

MySQL의 - 장소 날짜 유형 변경 날짜 문자열?

(안녕하세요. 저는 SQL 특히 MySQL의 새로운 틱 해요. 좀 PHP를 알고있다.)

나는 "DATE_STRING"열을 포함하는 테이블이 있습니다. 레거시 이유로,이 D / m / YY 형식의 날짜를 포함하는 텍스트 필드이다. 예를 들면 2009년 11월 22일에 대한 "22/11/09".

질문 : 어떻게 (YYYY-MM-DD) 표준 MySQL의 날짜 형식이 열에서 모든 필드를 변환 할 수 있습니다, 현재 위치에서?

또는, 어떻게 각각의 기존 텍스트 기반의 일을, 테이블 내에서 ( '날짜'형의) 다른 열 표준 날짜를 만들 수, 열 유형이 텍스트임을 주어진 장소에서 변경할 수있는 실패?

어떤 도움을 주셔서 감사합니다.

해결법

  1. ==============================

    1.당신은 아마 STR_TO_DATE () 함수를 사용하고 싶습니다.

    당신은 아마 STR_TO_DATE () 함수를 사용하고 싶습니다.

    SELECT STR_TO_DATE(textdate, '%d/%m/%y') FROM MyTable...
    

    또는 DATE 데이터 유형과 다른 열을 생성하고 값을 복사 :

    ALTER TABLE MyTable ADD COLUMN realdate DATE;
    UPDATE MyTable SET realdate = STR_TO_DATE(textdate, '%d/%m/%y');
    
  2. ==============================

    2.

        UPDATE your_table
        SET your_col = '20'
                  + substring(your_col, 
                              LOCATE('/', your_col, LOCATE('/', your_col) + 1) + 1
                             )
                  + '-'
                  + substring(your_col, 
                              LOCATE('/', your_col) + 1, 
                              LOCATE('/', your_col, LOCATE('/', your_col) + 1)
                             )
                  + '-'
                  + substring(your_col, 1, LOCATE('/', your_col) - 1)
    
    
    /*
        LOCATE('/', your_col) -> search for 1st occurence of '/' in your_col
        LOCATE('/', your_col, LOCATE('/', your_col) + 1) -> search for 2nd occurence of '/' in your_col
        LOCATE('/', your_col, LOCATE('/', your_col) + 1) + 1 -> from where to retriev the last part
    */
    

    (I는> = 이천년 가정)

  3. ==============================

    3.당신은 MySQL의 내에서이 일을 문제가있는 경우, 당신은 () 한 strtotime를 사용하여 날짜를 변환하여 PHP를 시도 할 수

    당신은 MySQL의 내에서이 일을 문제가있는 경우, 당신은 () 한 strtotime를 사용하여 날짜를 변환하여 PHP를 시도 할 수

  4. from https://stackoverflow.com/questions/1408285/mysql-change-date-string-to-date-type-in-place by cc-by-sa and MIT license