2013-08-23 2 views
1

저는 MySQL을 사용하고 있으며 데이터베이스에 잘못 입력 된 날짜 열이 있습니다. 보다 구체적으로, dd/mm/yy로 입력되었지만 MySQL은 yyyy/mm/dd 형식으로 가정합니다. 이 문제를 해결하기 위해 다음 코드를 만들었지 만 첫 번째 줄의 하위 쿼리가 두 개 이상의 행을 반환한다는 오류가 있습니다. 모든 행에서이 작업을 수행하려면 어떻게합니까? 루프가 필요한가요?SQL : 모든 행에 대해 동일한 작업 수행

SET @raw_date = (SELECT j.a_date FROM tbl_job j); 

SET @first = SPLIT_STR(@raw_date, '-', 1); 
SET @second = SPLIT_STR(@raw_date, '-', 2); 
SET @third = SPLIT_STR(@raw_date, '-', 3); 

SET @first = (SELECT RIGHT(@first, 2)); 

SET @job_date = CONCAT(@third,'-',@second,'-',@first); 

UPDATE tbl_job 
SET tbl_job.a_date = @job_date; 
+0

은 열은 어떤 유형입니까? – Mihai

+0

날짜 유형입니다. 값은 처음에는 문자열로 입력되었고 MySQL은 제 질문에서 언급 한 것처럼 역으로 해석했습니다. –

+0

만약 내가 틀렸어도 날짜 필드는 ymd로만 날짜를 저장합니다.하지만 원하는 날짜를 검색 할 수는 있습니다. 날짜를 입력하십시오 (date_field, '% d/% m/% Y') http : //www.w3schools. com/sql/func_date_format.asp – Mihai

답변

2
SELECT j.a_date FROM tbl_job 
UPDATE tbl_job 
SET tbl_job.a_date = @job_date 

WHERE 절을 제거, 모든 행을 업데이트합니다 ...

+0

고마워 이것이 내가 찾고있는 대답에 가깝다. 불행히도, 나는 나의 질문을 불분명하게했다. 나는 그것을 더 분명하게하기 위해 그것을 편집했다. –

관련 문제