1
현재 미국 동부 표준시에 데이터베이스에 DATETIME
개의 필드가 모두 저장되어 있으며 UPDATE
의 모든 필드가 UTC에 저장됩니다. 나는 많은 테이블에 많은 DATETIME
필드를 가지고있다. 식별 할 수있는 방법이 있습니까? UPDATE
한 번에 모두 확인할 수 있습니까?데이터베이스의 DATETIME 필드를 모두 업데이트하십시오.
현재 미국 동부 표준시에 데이터베이스에 DATETIME
개의 필드가 모두 저장되어 있으며 UPDATE
의 모든 필드가 UTC에 저장됩니다. 나는 많은 테이블에 많은 DATETIME
필드를 가지고있다. 식별 할 수있는 방법이 있습니까? UPDATE
한 번에 모두 확인할 수 있습니까?데이터베이스의 DATETIME 필드를 모두 업데이트하십시오.
당신은 다음과 같은 문장으로 필요로하는 UPDATE 문 생성 할 수있다 :
SET @tzdiff = 5; -- difference between EST and UTC
SET @db = 'test4'; -- your DB name
SELECT
CONCAT(
'UPDATE ',
'`', c.TABLE_NAME, '` ',
'SET ',
'`', COLUMN_NAME, '` = ',
'`', COLUMN_NAME, '` + INTERVAL ', @tzdiff, ' HOUR;'
) as update_statement
FROM
INFORMATION_SCHEMA.COLUMNS c
WHERE
c.TABLE_SCHEMA = @db
AND
c.`DATA_TYPE` LIKE 'datetime';
결과를 내 데이터베이스 '테스트 4'에 대한 : 1 회 작업에 대한
update_statement
-----------------------------------------------------------------------
UPDATE `example12` SET `column_name` = `column_name` + INTERVAL 5 HOUR;
UPDATE `post` SET `expiration` = `expiration` + INTERVAL 5 HOUR;
을 단순히 것 결과를 원하는 MySQL 클라이언트로 복사하고 실행하십시오. 물론 결과에 대한 준비된 명령문을 작성하고 실행하는 것이 가능합니다.
[INFORMATION_SCHEMA COLUMNS] (https://dev.mysql.com/doc/refman/5.6/en/columns-table.html) 테이블에 대한 쿼리로 이러한 쿼리를 작성할 수 있습니다. – VMai
@VMai의 주석은 [21.4 The INFORMATION_SCHEMA COLUMNS 테이블] (http://dev.mysql.com/doc/refman/5.6/en/columns-table.html), [13.6.6 커서] (http://dev.mysql.com/doc/refman/5.6/en/cursors.html) 및 [13.5.1 PREPARE 구문] (http://dev.mysql.com/doc/refman/5.6/en/prepare .html), [13.1.15 CREATE PROCEDURE 및 CREATE FUNCTION 구문] (http://dev.mysql.com/doc/refman/5.6/en/create-procedure.html)에서 모두 - (저장 프로 시저), 당신이 필요로하는 것을 얻을 수 있습니다. – wchiquito