ฉันจะตั้งค่าเขตเวลาของ MySQL ได้อย่างไร


339

ในเซิร์ฟเวอร์เดียวเมื่อฉันเรียกใช้:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2009-05-30 16:54:29 |
+---------------------+
1 row in set (0.00 sec)

บนเซิร์ฟเวอร์อื่น:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2009-05-30 20:01:43 |
+---------------------+
1 row in set (0.00 sec)

ไม่เพียง แต่มีความแตกต่างของเขตเวลาเท่านั้น แต่มีการเลื่อนเวลาไม่สำคัญเช่นกัน: "คุยกับ DBA ของคุณเกี่ยวกับntp- และดูว่าอะไรเหมาะกับคุณ!"
colm.anseo

@ colm.anseo สงบลงมันอาจจะเป็นความแตกต่างระหว่างการเรียกใช้แบบสอบถาม
HosseyNJF

1
@HosseyNJF ภายใน 7 นาที? พักดื่มกาแฟระหว่างการเปรียบเทียบ?
colm.anseo

คำตอบ:


525

ฉันคิดว่านี่อาจเป็นประโยชน์:

มีสามสถานที่ที่อาจตั้งค่าเขตเวลาใน MySQL:

ในไฟล์ "my.cnf" ในส่วน [mysqld]

default-time-zone='+00:00'

ตัวแปร @@ global.time_zone

หากต้องการดูว่ามีการตั้งค่าไว้ที่:

SELECT @@global.time_zone;

หากต้องการตั้งค่าให้ใช้อย่างใดอย่างหนึ่ง:

SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';

(การใช้เขตเวลาที่มีชื่อเช่น 'ยุโรป / เฮลซิงกิ' หมายความว่าคุณต้องมีตารางเขตเวลาที่มีประชากรอยู่อย่างถูกต้อง)

โปรดจำไว้ว่า+02:00เป็นการชดเชย Europe/Berlinเป็นเขตเวลา (ที่มีสองออฟเซ็ต) และCESTเป็นเวลานาฬิกาที่สอดคล้องกับออฟเซ็ตเฉพาะ

ตัวแปร @@ session.time_zone

SELECT @@session.time_zone;

ในการตั้งค่าให้ใช้อย่างใดอย่างหนึ่ง:

SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";

ทั้งคู่อาจคืนค่าระบบซึ่งหมายความว่าพวกเขาใช้ชุดเขตเวลาใน my.cnf

สำหรับชื่อเขตเวลาในการทำงานของคุณต้องติดตั้งตารางข้อมูลเขตเวลาของคุณจะต้องมีประชากร: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html ฉันยังพูดถึงวิธีการเติมตารางเหล่านั้นในคำตอบนี้

เพื่อรับค่าเขตเวลาปัจจุบันเป็น TIME

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

มันจะกลับมา 02:00:00 ถ้าเขตเวลาของคุณคือ +2: 00

ในการรับเวลาประทับปัจจุบันของ UNIX:

SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());

เพื่อรับคอลัมน์เวลาประทับเป็น UNIX Timestamp

SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`

ในการรับคอลัมน์ UTC datetime เป็นเวลาประทับ UNIX

SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`

หมายเหตุ: การเปลี่ยนเขตเวลาจะไม่เปลี่ยนวันที่และเวลาที่เก็บไว้แต่จะแสดงช่วงเวลาที่แตกต่างกันสำหรับคอลัมน์เวลาปัจจุบันที่มีอยู่เนื่องจากจะถูกเก็บไว้ภายในเป็นเวลาประทับ UTC และแสดงภายนอกในเขตเวลา MySQL ปัจจุบัน

ฉันทำ cheatsheet ที่นี่: MySQL ควรตั้งค่าเขตเวลาเป็น UTC หรือไม่


3
+00:00ไม่ใช่เขตเวลา แต่เป็นเวลาที่ชดเชย จะเกิดอะไรขึ้นกับ DST? มันอยู่ที่ +0 ตลอดทั้งปีหรือไม่
mpen

1
@ ทำเครื่องหมายฉันไม่แน่ใจเอกสารบอกว่าเมื่อตั้งค่าtime_zone="+00:00"คุณกำลังตั้งค่าเขตเวลาโดยใช้การชดเชยจาก UTC พิจารณาว่าค่าที่ตั้งไว้ไม่เคยเปลี่ยนแปลงและ UTC ไม่ปฏิบัติตาม DST ฉันสามารถสันนิษฐานได้ว่ามันคงเดิมตลอดทั้งปี
Timo Huovinen

1
@TimoHuovinen ขออภัยฉันหมายถึง+00:00 ดูเหมือนออฟเซ็ตดังนั้นจึงเป็นเรื่องแปลกที่ MySQL เลือกที่จะใช้แทน UTC แทนที่จะใช้สตริง "UTC" แทน ขอบคุณสำหรับข้อมูล.
mpen

1
ฉันตั้งค่า +00: 00 แต่ฉันได้รับข้อผิดพลาดนี้: ข้อผิดพลาด: ตัวเลือกที่พบโดยไม่มีกลุ่มก่อนหน้าในไฟล์กำหนดค่า: /etc/my.cnf
János

5
ใน Win7 เส้นทางไปยังไฟล์การตั้งค่า mysql คือC:\ProgramData\MySQL\MySQL Server x.x\my.ini
oabarca

83

สำหรับทุกคนที่ยังคงมีปัญหานี้:

value="jdbc:mysql://localhost:3306/dbname?serverTimezone=UTC"

ทำงานให้ฉัน เพียงแค่ต่อ?serverTimezone=UTCท้าย


หากเขตเวลาของฉันคือ UTC + 7 ฉันจะระบุได้อย่างไรในสตริงการเชื่อมต่อ ฉันพยายามต่อท้าย "? serverTimezone = UTC + 7" แล้วมันไม่ทำงาน
Chi Nn Nghê

1
คำถามไม่เกี่ยวกับ JDBC แต่ MySQL เอง
Luiz

2
@ ChiếnNghê: คุณควรใช้Asia/Ho_Chi_MinhแทนUTCBTW คำถามคือเกี่ยวกับการเปลี่ยนเขตเวลา MySQL ดังนั้นโปรดดูที่ @Timo คำตอบ หากคุณมีปัญหากับตัวติดตั้ง MySQL ให้เพิ่มสภาพแวดล้อม TZ และควรใช้งานได้
Liem Le

2
นี่เป็นการแจ้งให้ JDBC ทราบว่าเขตเวลาของเซิร์ฟเวอร์คืออะไรมันไม่เปลี่ยน หากต้องการตั้งค่าเขตเวลาของเซสชั่นให้ตรวจสอบคำตอบที่ใช้SET time_zone=...
Nikola Mihajlović

ฉันได้รับข้อผิดพลาด CDT แต่สิ่งนี้ได้แก้ไขให้ฉันแล้ว
Akexis

58

เมื่อคุณสามารถกำหนดค่าเซิร์ฟเวอร์โซนเวลาสำหรับ MySQL หรือ PHP:

โปรดจำไว้ว่า:

  1. เปลี่ยนระบบเขตเวลา ตัวอย่างสำหรับ Ubuntu:

    $ sudo dpkg-reconfigure tzdata
  2. รีสตาร์ทเซิร์ฟเวอร์หรือคุณสามารถรีสตาร์ท Apache 2 และ MySQL:

    /etc/init.d/mysql restart

2
บางทีวิธีการนี้อาจไม่ถูกต้อง คิดเกี่ยวกับสถานการณ์ของการมีเซิร์ฟเวอร์ด้วย UTC แต่แอปพลิเคชันของคุณกำลังให้บริการข้อมูลไปยังประเทศใน UTC -0600 หากต้องการปรับเขตเวลาสำหรับ MySQL อาจทำได้ดีกว่ามาก
ivanleoncz

1
โดยเฉพาะอย่างยิ่งถ้าคุณทำงานในพื้นที่ที่ครอบคลุมหลายเขตเวลา
Alexis Wilke

57

หากต้องการตั้งค่าสำหรับเซสชันปัจจุบันให้ทำ:

SET time_zone = timezonename;

14
SELECT @@ เซสชัน.time_zone;
James Skidmore

1
ฉันพยายามแก้ไขข้อผิดพลาดบางอย่างในระบบของฉันและฉันต้องตั้งค่า time_zone เป็น UTC ไม่ใช่ GMT คุณรู้หรือไม่ว่าฉันตั้งค่าเป็น '-0: 00' หรือ '+00: 00' นี่เป็นคำอธิบายประกอบ UTC หรือคำอธิบายประกอบ GMT? ฉันไม่พบข้อมูลที่เฉพาะเจาะจงนี้ ไชโย!
rafa.ferreira

@Castanho ฉันค่อนข้างมั่นใจว่าทั้งสองจะทำงานได้ดี ตรวจสอบคำอธิบายสำหรับคำถามนี้: stackoverflow.com/questions/3466630/…
James Skidmore

คุ้มค่าสำหรับโซนเวลาที่สามารถเช่นเดียวกับหนึ่งชุดใน PHP SET time_zone = 'America/Boise'เช่น ขอบคุณสำหรับคำตอบ James Skidmore!
อดัม F

1
@the_nuts ใช่การSET time_zone = 'UTC';ตั้งค่าจะหายไประหว่างการรีสตาร์ทเซิร์ฟเวอร์
Timo Huovinen

48

เรียกใช้สิ่งนี้บนเซิร์ฟเวอร์ MySQL ของคุณ:

SET GLOBAL time_zone = '+8:00';

โดยที่ +8: 00 จะเป็นเขตเวลาของคุณ


14
โปรดทราบว่านี่เป็นเพียงชั่วคราวจนกว่าคุณจะเริ่ม Mysql ใหม่
rubo77

หนึ่งจะไม่ค่อยมีสิทธิ์ superuser เมื่อเชื่อมต่อกับฐานข้อมูล การตั้งค่า@@session.time_zoneตามที่อธิบายไว้ในคำตอบอื่น ๆ เป็นเส้นทางที่ดีกว่ามาก
colm.anseo

16

สิ่งนี้ใช้ได้กับฉันสำหรับสถานที่ในอินเดีย:

SET GLOBAL time_zone = "Asia/Calcutta";
SET time_zone = "+05:30";
SET @@session.time_zone = "+05:30";

คุณจำเป็นต้องเรียกใช้สิ่งนี้เป็นแบบสอบถามบน mysql หรือเขียนภายใต้ my.conf ด้วยไวยากรณ์ default-time-zone = '+05: 30' ต่อไปนี้
Swapnil Bijwe

11

คุณสามารถระบุเขตเวลาเริ่มต้นของเซิร์ฟเวอร์เมื่อคุณเริ่มการทำงานโปรดดูhttp://dev.mysql.com/doc/refman/5.1/en/server-options.htmlและ--default-time-zone=timezoneตัวเลือกเฉพาะ คุณสามารถตรวจสอบโซนเวลาสากลและเซสชันด้วย

SELECT @@global.time_zone, @@session.time_zone;

ตั้งค่าอย่างใดอย่างหนึ่งหรือทั้งสองด้วยSETคำสั่ง & c; ดูhttp://dev.mysql.com/doc/refman/5.1/en/time-zone-support.htmlสำหรับรายละเอียดเพิ่มเติมมากมาย


11

โปรดทราบว่าบางครั้ง 'ประเทศ / โซน' ไม่ทำงาน ... ปัญหานี้ไม่ใช่ระบบปฏิบัติการ, รุ่น MySQL และฮาร์ดแวร์ขึ้นอยู่กับ - ฉันเคยพบมาแล้วตั้งแต่ FreeBSD 4 และ Slackware Linux ในปี 2003 จนถึงวันนี้ MySQL ตั้งแต่เวอร์ชั่น 3 จนถึงเวอร์ชั่นล่าสุด มันเป็น ODD แต่มันเกิดขึ้น ตัวอย่างเช่น:

root@Ubuntu# ls -la /usr/share/zoneinfo/US
total 8

drwxr-xr-x  2 root root 4096 Apr 10  2013 .
drwxr-xr-x 22 root root 4096 Apr 10  2013 ..
lrwxrwxrwx  1 root root   18 Jul  8 22:33 Alaska -> ../SystemV/YST9YDT
lrwxrwxrwx  1 root root   21 Jul  8 22:33 Aleutian -> ../posix/America/Adak
lrwxrwxrwx  1 root root   15 Jul  8 22:33 Arizona -> ../SystemV/MST7
lrwxrwxrwx  1 root root   18 Jul  8 22:33 Central -> ../SystemV/CST6CDT
lrwxrwxrwx  1 root root   18 Jul  8 22:33 Eastern -> ../SystemV/EST5EDT
lrwxrwxrwx  1 root root   37 Jul  8 22:33 East-Indiana -> ../posix/America/Indiana/Indianapolis
lrwxrwxrwx  1 root root   19 Jul  8 22:33 Hawaii -> ../Pacific/Honolulu
lrwxrwxrwx  1 root root   24 Jul  8 22:33 Indiana-Starke -> ../posix/America/Knox_IN
lrwxrwxrwx  1 root root   24 Jul  8 22:33 Michigan -> ../posix/America/Detroit
lrwxrwxrwx  1 root root   18 Jul  8 22:33 Mountain -> ../SystemV/MST7MDT
lrwxrwxrwx  1 root root   18 Jul  8 22:33 Pacific -> ../SystemV/PST8PDT
lrwxrwxrwx  1 root root   18 Jul  8 22:33 Pacific-New -> ../SystemV/PST8PDT
lrwxrwxrwx  1 root root   20 Jul  8 22:33 Samoa -> ../Pacific/Pago_Pago
root@Ubuntu#

และข้อความเช่นนั้นควรจะทำงาน:

SET time_zone='US/Eastern';

แต่คุณมีปัญหานี้:

รหัสข้อผิดพลาด: 1298. เขตเวลาที่ไม่รู้จักหรือไม่ถูกต้อง: 'EUS / Eastern'

ลองดูที่โฟลเดอร์ย่อยในไดเรกทอรีข้อมูลโซนของคุณและดูชื่อไฟล์จริงสำหรับ symlink ในกรณีนี้คือ EST5EDT จากนั้นลองใช้คำสั่งนี้แทน:

SET time_zone='EST5EDT';

และมันทำงานได้จริงอย่างที่ควรจะเป็น! :) เก็บเคล็ดลับนี้ไว้ในใจ; ฉันไม่ได้เห็นว่ามันถูกบันทึกไว้ในคู่มือ MySQL และเอกสารอย่างเป็นทางการ แต่การอ่านเอกสารที่เกี่ยวข้องเป็นสิ่งที่ต้องทำ: เอกสารทางการของเขตเวลา MySQL 5.5และอย่าลืมโหลดข้อมูลเขตเวลาลงในเซิร์ฟเวอร์ของคุณเช่นนั้น (เรียกใช้ในฐานะผู้ใช้รูท!):

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

หมายเลขหนึ่งเคล็ดลับ - จะต้องทำอย่างแน่นอนภายใต้ผู้ใช้รูท MySQL มันสามารถล้มเหลวหรือสร้างผลลัพธ์ที่ไม่ทำงานแม้กระทั่งจากผู้ใช้ที่สามารถเข้าถึงฐานข้อมูล MySQL ได้อย่างเต็มที่ - ฉันเห็นความผิดพลาดของตัวเอง


กรุณาบอกชื่อและรายละเอียดเพิ่มเติมของคุณให้ฉัน - มีกรณีทำงานบางอย่างบนเดสก์ท็อปและเซิร์ฟเวอร์ Ubuntu
Alexey Vesnin


7

นี่เป็นคำถามอายุ 10 ปี แต่อย่างไรก็ตามนี่คือสิ่งที่ใช้ได้กับฉัน ฉันใช้ MySQL 8.0 กับ Hibernate 5 และ SpringBoot 4

ฉันได้ลองคำตอบที่ยอมรับแล้ว แต่ไม่ได้ผลสำหรับฉันสิ่งที่ได้ผลสำหรับฉันคือ:

db.url=jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=Europe/Warsaw

หากสิ่งนี้ช่วยให้คุณไม่ลืมที่จะลงคะแนน: D


4

คำถามโบราณพร้อมข้อเสนอแนะอีกหนึ่งข้อ:

หากคุณเพิ่งเปลี่ยนเขตเวลาของระบบปฏิบัติการเช่นผ่าน:

unlink /etc/localtime
ln -s /etc/usr/share/zoneinfo/US/Eastern /etc/localtime

... MySQL (หรือ MariaDB) จะไม่สังเกตจนกว่าคุณจะเริ่มบริการ db ใหม่:

service mysqld restart

(หรือ)

service mariadb restart

3

หากคุณใช้MySql Workbenchคุณสามารถตั้งค่านี้ได้โดยเปิดมุมมองผู้ดูแลระบบและเลือกแท็บขั้นสูง ส่วนด้านบนคือ "รองรับหลายภาษา" และช่องทำเครื่องหมายแรกควรเป็น "เขตเวลาเริ่มต้น" ทำเครื่องหมายที่ช่องนั้นแล้วป้อนเขตเวลาที่คุณต้องการรีสตาร์ทเซิร์ฟเวอร์และคุณน่าจะไปได้ดี


2
ปัญหาเกี่ยวข้องกับ MySQL ไม่ใช่โปรแกรมเฉพาะ
fedorqui 'ดังนั้นหยุดทำอันตราย'

3
ไม่พบอะไรเช่นนั้น
Kzqai

1
ไม่มีอะไรเช่นนั้น
Green

สำหรับ MySQL Workbench 6.3: อินสแตนซ์ => ไฟล์ตัวเลือก => ทั่วไป => นานาชาติ
paulus

5
[ UPDATE สำหรับ MySQL Workbench 8.0 ] เลือก "เซิร์ฟเวอร์" => "ตัวเลือก File" และใน "ทั่วไป" แท็บดูด้านล่าง "นานาชาติ" ส่วน จะมีช่องทำเครื่องหมาย "เขตเวลาเริ่มต้น" พร้อมกับช่องที่เกี่ยวข้อง ดังนั้นคุณสามารถตั้งค่าเขตเวลาเริ่มต้นได้ที่นั่น
informatik01

3

ก่อนอื่นคุณต้องทราบว่า time_zone คืออะไรที่คุณสามารถสืบค้นได้

SHOW VARIABLES LIKE '%time_zone%'; 

ผลลัพธ์ของคุณควรคล้ายกันดังนี้

**Variable_name**     **Value**
system_time_zone      CDT
time_zone             SYSTEM

จากนั้นถ้าคุณต้องการยืนยันว่าคุณกำลังพูดโซนเวลาบางอย่างเช่น CDT แทนที่จะเป็นแบบ EST คุณสามารถตรวจสอบเวลาที่เครื่องของคุณคิดโดยบอกว่า

SELECT NOW();

ถ้าไม่ได้เป็นเวลาที่คุณต้องการคุณจำเป็นต้องเปลี่ยนมัน ... SET time_zone = timezone_nameทุกสิ่งที่คุณต้องทำคือ ตรวจสอบให้แน่ใจว่าเป็นContinent/Cityรูปแบบที่เหมาะสม

หากคุณอยู่บนเซิร์ฟเวอร์ที่ใช้ร่วมกันเนื่องจากคุณมีบริการโฮสต์โปรดอ้างอิงคำตอบเหล่านี้เกี่ยวกับการเปลี่ยนไฟล์ php.ini หรือไฟล์. htaccess


1
ฉันลองmysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p Eก่อนแล้วก็ใช้ได้SET time_zone = timezone_nameดี
Barakat Turki

1

คุณต้องตั้งค่าเขตเวลาของสถานที่ เพื่อให้กระบวนการต่อไปนี้
เปิด MSQLWorkbench ของคุณเขียนคำสั่ง sql อย่างนี้

select now();

และ URL ของคุณอาจเป็นเช่นนี้

url = "jdbc:mysql://localhost:3306/your_database_name?serverTimezone=UTC";

@LuFFy นี่คือสิ่งที่ฉันสงสัยเกี่ยวกับดังนั้นสำหรับแต่ละการเชื่อมต่อ db ต้องตั้งค่าเขตเวลาถ้าเราใช้เขตเวลาขอบเขตเซสชันและไม่ใช่เขตเวลา 'global' เป็นเรื่องดีที่จะใช้ขอบเขตเซสชันหากแอปสามารถมีผู้ใช้ในเขตเวลาต่างกันใช่ไหม
Valter Ekholm

1

การตั้งค่าโซนเวลามาตรฐานที่MariaDBคุณต้องไปที่50 server.cnfไฟล์

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

จากนั้นคุณสามารถป้อนรายการต่อไปนี้ในส่วน mysqld

default-time-zone='+01:00'

ตัวอย่าง:

#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]

#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

### Default timezone ###
default-time-zone='+01:00'

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.

การเปลี่ยนแปลงจะต้องทำผ่านไฟล์การกำหนดค่ามิฉะนั้นเซิร์ฟเวอร์ MariaDB จะรีเซ็ตตาราง mysql หลังจากรีสตาร์ท!


1

แก้ไขไฟล์ MySQL config

sudo nano /etc/mysql/my.cnf

เลื่อนและเพิ่มสิ่งเหล่านี้ไปที่ด้านล่าง เปลี่ยนเป็นเขตเวลาที่เกี่ยวข้อง

[mysqld]
default-time-zone = "+00:00"

รีสตาร์ทเซิร์ฟเวอร์

sudo service mysql restart

0

บน Windows (IIS) เพื่อให้สามารถตั้งค่า GLOBAL time_zone = 'ยุโรป / เฮลซิงกิ' (หรืออะไรก็ตาม) ตารางคำอธิบาย MySQL time_zone จะต้องมีการเติมข้อมูลก่อน

ฉันดาวน์โหลดสิ่งเหล่านี้จากลิงค์นี้https://dev.mysql.com/downloads/timezones.html

หลังจากเรียกใช้แบบสอบถาม SQL ที่ดาวน์โหลดมาฉันสามารถตั้งค่า GLOBAL time_zone และแก้ไขปัญหาที่ฉันมีได้ที่ SELECT NOW (); กำลังส่งกลับ GMT มากกว่า BST


ฉันสามารถใช้รูปแบบตัวเลข "+01: 00" แทน "Europe / Stockholm" ดังนั้นฉันไม่จำเป็นต้อง dowload ตารางคำอธิบาย time_zone ฉันคิดว่า
Valter Ekholm

0

ในกรณีของฉันการแก้ปัญหาคือการตั้งค่าพารามิเตอร์ serverTimezone ในการตั้งค่าขั้นสูงเป็นค่าที่เหมาะสม (CET สำหรับเขตเวลาของฉัน)

เมื่อฉันใช้ IntelliJ ฉันใช้โมดูลฐานข้อมูล ขณะเพิ่มการเชื่อมต่อใหม่ไปยังฐานข้อมูลและหลังจากเพิ่มพารามิเตอร์ที่เกี่ยวข้องทั้งหมดในแท็บทั่วไปมีข้อผิดพลาดในปุ่ม "ทดสอบการเชื่อมต่อ" อีกครั้งวิธีแก้ไขคือการตั้งค่าพารามิเตอร์เซิร์ฟเวอร์เขตเวลาในแท็บขั้นสูง


0

หากใครก็ตามที่ใช้ GoDaddy Shared Hosting คุณสามารถลองวิธีการแก้ปัญหาต่อไปนี้ได้ผลสำหรับฉัน

เมื่อเริ่มการเชื่อมต่อฐานข้อมูลให้ตั้งค่าคำสั่ง time_zone ในวัตถุ PDO ของฉันเช่น:

$pdo = new PDO($dsn, $user, $pass, $opt);
$pdo->exec("SET time_zone='+05:30';");

โดยที่ "+05: 30" คือเขตเวลาของอินเดีย คุณสามารถเปลี่ยนได้ตามความต้องการของคุณ

หลังจากนั้น; กระบวนการ MySQL ทั้งหมดที่เกี่ยวข้องกับวันที่และเวลาถูกตั้งค่าด้วยเขตเวลาที่ต้องการ

ที่มา: https://in.godaddy.com/community/cPanel-Hosting/How-to-change-TimeZone-for-MySqL/td-p/31861

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.