วิธีการตั้งค่า Timezone เป็น UTC อย่างถาวร
วิธีที่แนะนำคือแก้ไขไฟล์กำหนดค่า my.cnf (Linux) หรือ my.ini (Windows)
ขั้นตอนการตั้งค่า
1. หาตำแหน่งไฟล์ข้อมูล
SELECT @@datadir;
2. แก้ไขไฟล์ my.cnf/my.ini
เพิ่มบรรทัดต่อไปนี้ในส่วน [mysqld]:
[mysqld]
default-time-zone = '+00:00'
หรือ (รูปแบบเก่า):
[mysqld_safe]
timezone = UTC
3. Restart MySQL Service
# Linux
sudo systemctl restart mysqld
# Windows (Services.msc หรือ Command Prompt แบบ Admin)
net stop mysql80
net start mysql80
วิธีทางเลือก: ตั้งค่าต่อ Session (ไม่ถาวร)
SET time_zone = '+00:00';
-- หรือ
SET time_zone = 'UTC';
⚠️ ไม่แนะนำ ให้รันคำสั่งนี้ทุกครั้งที่เชื่อมต่อ (Performance overhead)
การตรวจสอบ Timezone ปัจจุบัน
SELECT @@global.time_zone, @@session.time_zone;
SELECT NOW(), UTC_TIMESTAMP();
คำแนะนำเพิ่มเติม
- 🕐 Best Practice: เก็บข้อมูลเป็น UTC ใน Database, แปลง timezone ที่ Application Layer
- 🔧 ใช้
CONVERT_TZ()สำหรับแปลง timezone ใน Query - 📅
CURDATE()และNOW()จะคืนค่าตาม Session Timezone - ⚡
UTC_TIMESTAMP(),UTC_DATE(),UTC_TIME()คืนค่า UTC เสมอ ไม่ขึ้นกับ Timezone setting