programing

mysql 날짜에서 연도 변경

mailnote 2023. 7. 30. 18:01
반응형

mysql 날짜에서 연도 변경

데이터베이스에 표준 mysql 날짜 유형으로 저장된 날짜가 많습니다.

원래 날짜와 상관없이 어떻게 1년을 2013년으로 숨길 수 있습니까?

따라서 날짜가 2009-01-01이면 2013-01-01이 되지만 2012-01-04이면 2013-01-14로 변환됩니다.

간단명료할 줄 알았는데, 도무지 알 수가 없었어요=/

그것은 간단합니다.

DATTIME:

UPDATE table_name
SET date_col=DATE_FORMAT(date_col,'2013-%m-%d %T');

날짜:

UPDATE table_name
SET date_col=DATE_FORMAT(date_col,'2013-%m-%d');

현재 답변의 문제는 어느 것도 윤년을 고려하지 않는다는 것입니다.'2016-02-29' 날짜를 택해 연결을 통해 2013년으로 환산하면 유효일자가 아닌 '2013-02-29'가 나옵니다.DATE_FORMAT('2013-02-29', '%Y-%m-%d')를 실행하면 결과는 다음과 같습니다.null여기서 예를 참조하십시오.

http://sqlfiddle.com/ #!9/c5358/11

연도를 변경하는 더 좋은 방법은 일광 절약 시간을 고려하기 때문에 DATE_ADD를 사용하는 것입니다.예:

SELECT
DATE_FORMAT(DATE_ADD(datecol, INTERVAL (YEAR(CURRENT_DATE()) - YEAR(datecol)) YEAR), '%Y-%m-%d') `date`
FROM t;

모든 날짜를 현재 연도가 아닌 2013년으로 변환하려면 CURRENT_DATE()를 '2013-01-01'로 대체할 수 있습니다.이 솔루션의 예는 다음과 같습니다.

http://sqlfiddle.com/ #!9/c5358/12

UPDATE tableName
SET    dateColumn = dateColumn + INTERVAL 4 YEAR

다른 방법은 연결하는 것입니다.

UPDATE Table1
SET    DateColumn = CONCAT(YEAR(CURDATE()), '-', DATE_FORMAT(dateColumn, '%m-%d'))

날짜 필드인 경우:

  UPDATE table_name SET date_field_name = CONCAT("2013", RIGHT(date_field_name,6));

날짜 시간 필드인 경우:

UPDATE table_name SET date_field_name = CONCAT("2013", RIGHT(date_field_name,15));

퀘스트에서 현재 날짜는 2013년이며, 현재 연도를 날짜로 설정하기를 원하는 것으로 알고 있습니다.

UPDATE table_name SET date_col=DATE_FORMAT('2013-05-06',YEAR(CURRENT_DATE)-%m-%d);

언급URL : https://stackoverflow.com/questions/14491906/changing-year-in-mysql-date

반응형