MySQL에서는 DATETIME과 TIMESTAMP가 시간 값을 저장하는 데 일반적으로 사용되는 데이터 유형입니다. 둘 다 날짜와 시간을 저장하는 목적으로 사용되지만 사용법에 영향을 미치는 근본적인 차이점이 있습니다. 이 기사에서는 DATETIME과 TIMESTAMP의 차이점을 살펴보고, DATETIME의 몇 가지 제한 사항을 극복하여 TIMESTAMP의 장점을 활용하는 방법을 살펴보겠습니다.
DATETIME 데이터 유형의 일부 제한 사항을 극복하려면 다음 전략을 따를 수 있습니다.
DATETIME이 시간대를 준수하지 않는 문제를 해결하려면 데이터베이스 및 애플리케이션 수준에서 모든 임시 작업을 UTC를 사용하도록 표준화할 수 있습니다.
SET GLOBAL time_zone = '+00:00'; SET time_zone = '+00:00';
INSERT INTO example_table (event_time) VALUES (CONVERT_TZ('2024-06-19 12:30:00', 'Your/Timezone', '+00:00'));
SELECT CONVERT_TZ(event_time, '+00:00', 'Your/Timezone') as local_event_time FROM example_table;
행이 수정될 때 DATETIME 값을 자동으로 업데이트하려면 트리거를 사용할 수 있습니다.
CREATE TRIGGER before_update_example_table BEFORE UPDATE ON example_table FOR EACH ROW BEGIN SET NEW.updated_at = NOW(); END;
삽입 시 DATETIME 값을 자동으로 설정하려면 NOW() 함수를 사용하여 기본값을 할당할 수 있습니다.
CREATE TABLE example_table ( id INT PRIMARY KEY AUTO_INCREMENT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
시간에 대해 더 높은 정밀도가 필요한 경우 DATETIME(6) 또는 TIMESTAMP(6)를 사용하여 최대 마이크로초 정밀도까지 시간을 저장할 수 있습니다.
CREATE TABLE example_table ( id INT PRIMARY KEY AUTO_INCREMENT, created_at DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6), updated_at DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) );
모든 시간을 저장하기 전에 UTC로 변환하고 사용자에게 표시할 때 다시 현지 시간으로 변환하여 애플리케이션이 시간을 올바르게 처리하는지 확인하세요.
// Setting the application time zone to UTC date_default_timezone_set('UTC'); // Storing the current time as UTC $current_time_utc = date('Y-m-d H:i:s'); $query = "INSERT INTO example_table (event_time) VALUES ('$current_time_utc')"; // Retrieving the time and converting it to local time $event_time_utc = '2024-06-19 12:30:00'; $event_time_local = new DateTime($event_time_utc, new DateTimeZone('UTC')); $event_time_local->setTimezone(new DateTimeZone('Your/Timezone')); echo $event_time_local->format('Y-m-d H:i:s');
이러한 전략을 따르면 DATETIME을 사용하는 동안 TIMESTAMP의 이점을 활용하여 시간적 값을 더 쉽고 효율적이고 효과적으로 처리할 수 있습니다.
위 내용은 MySQL: `DATETIME` 및 `TIMESTAMP` 사용 및 개선의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!