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


217

ใครรู้ว่ามีฟังก์ชั่นดังกล่าวใน MySQL หรือไม่

UPDATE

สิ่งนี้จะไม่ส่งออกข้อมูลที่ถูกต้อง:

mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | SYSTEM              |
+--------------------+---------------------+

หรือบางที MySQL เองก็ไม่รู้ว่าtime_zoneใช้แล้วใช่ไหมเราสามารถมีส่วนร่วมได้PHPที่นี่ตราบใดที่ฉันสามารถรับข้อมูลที่ไม่ถูกต้องSYSTEM...


3
"เราสามารถมีส่วนร่วมกับ PHP ที่นี่" - และตัวอย่างของ php นั้นจะอยู่ในเครื่องเดียวกับเซิร์ฟเวอร์ MySQL หรือไม่
VolkerK

ใช่พวกเขาจะอยู่ในเครื่องเดียวกัน
user198729

10
ลอง@@system_time_zoneตามที่ระบุไว้ในคำตอบของฉันด้านล่าง
แอนดรู

เนื่องจากมีการถามคำถามเพิ่มคำตอบเพิ่มเติมอาจพิจารณาคำตอบที่ยอมรับได้อีกครั้ง
Timo Huovinen

1
แม้ว่าเซิร์ฟเวอร์ MySQL และ PHP อยู่บนเซิร์ฟเวอร์เดียวกันพวกเขาอาจเลือกโซนเวลาที่แตกต่างกันตามการตั้งค่าของพวกเขา และเวลาเหล่านี้อาจแตกต่างจากสิ่งที่ระบบปฏิบัติการของคุณแสดงและ PHP / MySQL แสดง
Bimal Poudel

คำตอบ:


227

จากคู่มือ ( ส่วน 9.6 ):

ค่าปัจจุบันของโซนเวลาทั่วโลกและเฉพาะลูกค้าสามารถเรียกคืนได้ดังนี้:
mysql> SELECT @@global.time_zone, @@session.time_zone;

แก้ไขผลตอบแทนข้างต้นSYSTEMหาก MySQL ถูกตั้งค่าเป็นทาสให้กับเขตเวลาของระบบซึ่งมีประโยชน์น้อยกว่า เนื่องจากคุณกำลังใช้ PHP ถ้าคำตอบจาก MySQL เป็นSYSTEMแล้วคุณสามารถขอให้ระบบสิ่งที่เขตก็date_default_timezone_getใช้ผ่านทาง (แน่นอนตามที่ VolkerK ชี้ให้เห็น PHP อาจทำงานบนเซิร์ฟเวอร์ที่แตกต่างกัน แต่เป็นไปตามข้อสมมติสมมติว่าเว็บเซิร์ฟเวอร์และเซิร์ฟเวอร์ DB นั้นกำลังพูดถึงตั้งเป็น [หากไม่ได้อยู่ใน ] เขตเวลาเดียวกันไม่ใช่ก้าวกระโดดครั้งใหญ่ ) แต่ระวังว่า (เช่นเดียวกับ MySQL) คุณสามารถตั้งค่าเขตเวลาที่ PHP ใช้ (date_default_timezone_set) ซึ่งหมายความว่าอาจรายงานค่าที่แตกต่างจากระบบปฏิบัติการที่ใช้อยู่ หากคุณเป็นผู้ควบคุมโค้ด PHP คุณควรรู้ว่าคุณทำเช่นนั้นและไม่เป็นไร

แต่คำถามทั้งหมดของสิ่งที่เขตเวลา MySQL เซิร์ฟเวอร์ที่ใช้อาจจะสัมผัสกันเพราะถามเซิร์ฟเวอร์สิ่งเขตเวลามันอยู่ในบอกคุณไม่มีอะไรแน่นอนเกี่ยวกับข้อมูลในฐานข้อมูล อ่านต่อเพื่อดูรายละเอียด:

การอภิปรายเพิ่มเติม :

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

set time_zone = '+00:00';

ที่กำหนดเขตเวลาเป็น GMT เพื่อให้การดำเนินการเพิ่มเติมใด ๆ (เช่นnow()) จะใช้ GMT

โปรดทราบว่าค่าเวลาและวันที่จะไม่ถูกเก็บไว้กับข้อมูลเขตเวลาใน MySQL:

mysql> create table foo (tstamp datetime) Engine=MyISAM;
Query OK, 0 rows affected (0.06 sec)

mysql> insert into foo (tstamp) values (now());
Query OK, 1 row affected (0.00 sec)

mysql> set time_zone = '+01:00';
Query OK, 0 rows affected (0.00 sec)

mysql> select tstamp from foo;
+---------------------+
| tstamp              |
+---------------------+
| 2010-05-29 08:31:59 |
+---------------------+
1 row in set (0.00 sec)

mysql> set time_zone = '+02:00';
Query OK, 0 rows affected (0.00 sec)

mysql> select tstamp from foo;
+---------------------+
| tstamp              |
+---------------------+
| 2010-05-29 08:31:59 |      <== Note, no change!
+---------------------+
1 row in set (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-05-29 10:32:32 |
+---------------------+
1 row in set (0.00 sec)

mysql> set time_zone = '+00:00';
Query OK, 0 rows affected (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-05-29 08:32:38 |      <== Note, it changed!
+---------------------+
1 row in set (0.00 sec)

ดังนั้นการรู้เขตเวลาของเซิร์ฟเวอร์ที่มีความสำคัญเฉพาะในแง่ของการทำงานที่ได้รับเวลาในขณะนี้เช่นnow(), unix_timestamp()ฯลฯ .; ไม่ได้บอกอะไรคุณเกี่ยวกับวันที่ในเขตข้อมูลที่ใช้ คุณอาจเลือกที่จะสมมติว่าพวกเขาเขียนโดยใช้เขตเวลาของเซิร์ฟเวอร์ แต่ข้อสันนิษฐานนั้นอาจมีข้อบกพร่อง หากต้องการทราบเขตเวลาของวันที่หรือเวลาใด ๆ ที่จัดเก็บไว้ในข้อมูลคุณต้องตรวจสอบให้แน่ใจว่าพวกเขาถูกเก็บไว้ในข้อมูลเขตเวลาหรือ (อย่างที่ฉันทำ) เพื่อให้แน่ใจว่าพวกเขาอยู่ใน GMT

ทำไมการสมมติว่าข้อมูลถูกเขียนโดยใช้เขตเวลาของเซิร์ฟเวอร์มีข้อบกพร่อง ข้อมูลอาจถูกเขียนโดยใช้การเชื่อมต่อที่ตั้งค่าเขตเวลาที่แตกต่างกัน ฐานข้อมูลอาจถูกย้ายจากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่นซึ่งเซิร์ฟเวอร์อยู่ในเขตเวลาที่แตกต่างกัน (ฉันพบว่าเมื่อฉันรับฐานข้อมูลที่ย้ายจากเท็กซัสไปแคลิฟอร์เนีย) แต่แม้ว่าข้อมูลที่ถูกเขียนไว้ในเซิร์ฟเวอร์ที่มีโซนเวลาปัจจุบันก็ยังคงคลุมเครือ เมื่อปีที่แล้วในสหรัฐอเมริกาเวลาออมแสงถูกปิดในเวลา 2:00 น. ของวันที่ 1 พฤศจิกายน สมมติว่าเซิร์ฟเวอร์ของฉันอยู่ในแคลิฟอร์เนียโดยใช้เขตเวลาแปซิฟิกและฉันมีค่า2009-11-01 01:30:00ในฐานข้อมูล มันเกิดขึ้นเมื่อไร? นั่นคือ 1:30 น. วันที่ 1 พฤศจิกายน PDT หรือ 1:30 น. วันที่ 1 พฤศจิกายนเวลา PST (หนึ่งชั่วโมงต่อมา)? คุณไม่มีทางรู้อย่างแน่นอน คุณธรรม: ควรเก็บวันที่ / เวลาใน GMT (ซึ่งไม่ได้ทำ DST) และแปลงเป็นเขตเวลาที่ต้องการเมื่อ / จำเป็น


5
@ user198729: มันไม่มีความหมายถึงแม้ว่ามันจะไม่เป็นประโยชน์อย่างที่ฉันหวังไว้ มันหมายถึงอะไร: ถามระบบปฏิบัติการ, MySQL มีการตอบสนองต่อสิ่งนั้น
TJ Crowder

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

1
@Senthil DATETIMEประเภทmySQL ไม่มีข้อมูลเขตเวลา ดังนั้นฉันคิดว่าปรัชญาพื้นฐานที่ตั้งใจไว้สำหรับ mySQL นั้นเป็นเขตเวลาที่มืดบอดที่สุดซึ่งหมายความว่าผู้ใช้จะยึดกับเขตเวลาเดียวไม่ว่าจะเป็น UTC หรือเขตเวลาที่เซิร์ฟเวอร์อยู่เก็บทุกอย่างในโซนนั้นและ ทำการแปลงใด ๆ ในระดับแอปพลิเคชั่นหรือการใช้งานCONVERT_TZ()( dev.mysql.com/doc/refman/5.0/en/ … ) อย่างน้อยนั่นเป็นวิธีที่ฉันเข้าใจอยู่เสมอว่ามันควรจะทำงานอย่างไร
Pekka

ขอบคุณ แต่สิ่งนี้ยังไม่ได้รับการแก้ไขฉันจะรับข้อมูล tz จากnow()PHP ได้อย่างไร
user198729

ฉันเห็นด้วยทั้งหมดกับ "ติดกับเขตเวลาหนึ่งเมื่อบันทึกเวลา" ส่วน .. แต่นี่ -> ".. หรือเขตเวลาที่เซิร์ฟเวอร์อยู่ใน .. " คุณจะรู้ได้อย่างไร? สมมติว่าคุณบันทึกค่าการประทับเวลาทั้งหมดเป็น UTC แต่เซิร์ฟเวอร์ของคุณอยู่ในเขตเวลา someother และคุณต้องการที่จะแสดงค่าการประทับเวลาตามที่เขต แล้วคุณจะรู้ได้อย่างไรว่าโซนเวลาใดที่เซิร์ฟเวอร์ของคุณอยู่ จากนั้นคุณสามารถส่งผ่านค่าบางส่วนไปยัง CONVERT_TZ () เพื่อแปลงค่าได้ใช่ไหม
Senthil

196

แบบสอบถามด้านล่างจะคืนค่าเขตเวลาของเซสชันปัจจุบัน

select timediff(now(),convert_tz(now(),@@session.time_zone,'+00:00'));

6
นี่เป็นคำตอบที่ถูกต้องเพราะมันแสดงให้เห็นว่า 'SYSTEM' ได้รับการยอมรับว่าเป็นเขตเวลาในการแปลงทำให้เพียงพอที่จะแปลงเช่น NOW () ไปเป็นเขตเวลาใดก็ได้
nilskp

5
ขอบคุณที่ใช้สิ่งนี้ฉันสามารถรับฟอร์แมทที่ต้องการได้:select time_format(timediff(now(),convert_tz(now(),@@session.time_zone,'+00:00')),'%H%i');
jordanbtucker

97
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP)ง่ายกว่า
Jakub Vrána

3
หรือSELECT TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP);เพื่อให้ได้ความแตกต่างในไม่กี่วินาที
philfreo

106

ง่ายดาย SELECT @@system_time_zone;

ส่งคืนPST(หรือสิ่งที่เกี่ยวข้องกับระบบของคุณ)

หากคุณพยายามกำหนดเขตเวลาของเซสชันคุณสามารถใช้แบบสอบถามนี้:
SELECT IF(@@session.time_zone = 'SYSTEM', @@system_time_zone, @@session.time_zone);

ซึ่งจะส่งกลับเขตเวลาเซสชั่นถ้ามันแตกต่างจากเขตเวลาระบบ


6
ข้อเสียเพียงอย่างเดียวคือถ้าเขตเวลาเปลี่ยนแปลงเนื่องจากการปรับเวลาตามฤดูกาลการเปลี่ยนแปลงจะยังคงรายงานว่า "จดจำ" ในเวลาที่เริ่มต้นเซิร์ฟเวอร์ให้ดูข้อผิดพลาด mysql 9518
Mark

72

ในฐานะจาคุบวรานา (ผู้สร้างหรือAdminerและNotORM ) กล่าวในการแสดงความคิดเห็นเพื่อเลือกเขตเวลาชดเชยในปัจจุบันในการTIMEใช้งาน:

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

มันจะกลับมา: 02:00:00หากเขตเวลาของคุณคือ +2: 00 สำหรับวันที่นั้น

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


หรือSELECT TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP);เพื่อให้ได้ความแตกต่างในไม่กี่วินาที
philfreo

add-on เพื่อ @philfreo - โปรดทราบว่าพารามิเตอร์ควรย้อนกลับใน TIMESTAMPDIFF เมื่อเทียบกับ TIMEDIFF ในการรับตัวอย่างที่ให้ไว้ในคำตอบนี้หาก TIMEDIFF ส่งคืน02:00:00TIMESTAMPDIFF ที่สอดคล้องกันจะส่งคืน-2หากหน่วยคือ HOUR -120หากหน่วยเป็น MINUTE ฯลฯ หากต้องการให้เครื่องหมายสอดคล้องกับเขตเวลาให้สลับพารามิเตอร์: SELECT TIMESTAMPDIFF(MINUTE, UTC_TIMESTAMP, NOW())จะส่งกลับค่าที่คาดไว้120สำหรับเขตเวลา 2: 00 เหตุผลในการระบุนาทีคือมีเขตเวลาไม่กี่แห่งที่ชดเชย 30 หรือ 45 นาทีให้ดูen.wikipedia.org/wiki/Time_zone
ToolmakerSteve

1
นี่เป็นคำตอบที่ดีกว่าคำตอบที่ยอมรับเพราะมันตอบคำถามโดยตรงและให้ทางออกแทนที่จะเป็นเพียงทฤษฎี
supersan

10

รับเขตเวลาปัจจุบันของ mysql คุณสามารถทำสิ่งต่อไปนี้:

 1. SELECT @@system_time_zone;   //from this you can get the system timezone 
 2. SELECT IF(@@session.time_zone = 'SYSTEM', @@system_time_zone, @@session.time_zone) //This will give you time zone if system timezone is different from global timezone

ตอนนี้ถ้าคุณต้องการเปลี่ยนเขตเวลา mysql แล้ว:

 1. SET GLOBAL time_zone = '+00:00'   //this will set mysql timezone in UTC
 2. SET @@session.time_zone = "+00:00";  //by this you can chnage the timezone only for your particular session 

6
SELECT EXTRACT(HOUR FROM (TIMEDIFF(NOW(), UTC_TIMESTAMP))) AS `timezone`

สิ่งนี้จะคืนค่าเขตเวลาเป็นจำนวนเต็ม (เช่น:) การ-6จัดการเวลาบวกหรือลบ (นี่คือที่EXTRACTมาในการเล่น: HOURฟังก์ชั่นเพียงอย่างเดียวส่งกลับเขตเวลาเชิงลบเป็นบวก)


6

ทุกคนมาหาเขตเวลาของ mysql db

ด้วยแบบสอบถามนี้คุณจะได้รับเขตเวลาปัจจุบัน:

mysql> SELECT @@system_time_zone as tz;
+-------+
|  tz   |
+-------+
|  CET  |
+-------+

4

คำสั่งที่กล่าวถึงในคำอธิบายจะส่งคืน "SYSTEM" ซึ่งระบุว่าต้องใช้เขตเวลาของเซิร์ฟเวอร์ ซึ่งไม่เป็นประโยชน์สำหรับแบบสอบถามของเรา

ข้อความค้นหาต่อไปนี้จะช่วยให้เข้าใจเขตเวลา

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP) as GMT_TIME_DIFF;

แบบสอบถามข้างต้นจะให้ช่วงเวลาที่เกี่ยวข้องกับ Coordinated Universal Time (UTC) ดังนั้นคุณสามารถวิเคราะห์เขตเวลาได้อย่างง่ายดาย ถ้าเขตเวลาฐานข้อมูลเป็น IST ผลลัพธ์จะเป็น 5:30

UTC_TIMESTAMP

ใน MySQL UTC_TIMESTAMP จะส่งกลับวันที่และเวลา UTC ปัจจุบันเป็นค่าใน 'YYYY-MM-DD HH: MM: SS' หรือ YYYYMMDDHHMMSS.uuuuuuu รูปแบบขึ้นอยู่กับการใช้งานของฟังก์ชั่นเช่นในสตริงหรือบริบทตัวเลข

NOW ()

ฟังก์ชัน NOW () MySQL NOW () ส่งคืนค่าวันที่และเวลาปัจจุบันในรูปแบบ 'YYYY-MM-DD HH: MM: SS' หรือรูปแบบ YYYYMMDDHHMMSS.uuuuuu ขึ้นอยู่กับบริบท (ตัวเลขหรือสตริง) ของฟังก์ชัน CURRENT_TIMESTAMP, CURRENT_TIMESTAMP (), LOCALTIME, LOCALTIME (), LOCALTIMESTAMP, LOCALTIMESTAMP () เป็นคำพ้องความหมายของ NOW ()


2

ตรวจสอบการสนับสนุนโซนเวลาเซิร์ฟเวอร์ MySQLและsystem_time_zoneตัวแปรระบบ มันช่วยได้ไหม


@user คุณสามารถสะกดคำในคำถามของคุณว่าข้อมูลใดที่คุณกำลังมองหาอย่างแน่นอน (เขตเวลาของเซิร์ฟเวอร์? ลูกค้า?) และเครื่องมือใดที่คุณใช้อยู่ คุณพูดถึง PHP คุณสามารถเข้าถึงบรรทัดคำสั่งได้หรือไม่
Pekka

5
@user เช่นกันฉันพบว่าคุณกำลังเจอกับคำตอบที่ไม่พึงประสงค์จากคนที่พยายามจะเป็นประโยชน์และไม่ผิดอย่างแน่นอน ฉันไม่รังเกียจการลงคะแนนหรือการเสียคะแนน แต่ทัศนคติของคุณไม่สนับสนุนให้มองหาวิธีการแก้ไขเพิ่มเติม
Pekka

3
@user อย่างที่ฉันพูดทัศนคติของคุณไม่ได้กระตุ้นให้ฉันค้นคว้าหาคำตอบเพิ่มเติมสำหรับคุณโดยเฉพาะอย่างยิ่งในแง่ของข้อมูลน้อยที่คุณให้ ขอโทษ
Pekka

3
@ user198729: ว้าวเสียทัศนคติ Pekka เป็นคนประเภทที่ช่วยเหลือผู้คนได้อย่างแท้จริง หากมารยาทเพียงอย่างเดียวไม่เพียงพอที่จะกระตุ้นให้คุณลองทำประโยชน์ด้วยตนเอง
TJ Crowder

2
แค่ความคิดของฉัน: ฉันจะไม่ผิดถ้าผู้ใช้ทำสิ่งเดียวกันกับโพสต์ของฉัน ฉันหมายถึงความกดดันในเรื่องกำหนดเวลาหรือความขุ่นมัวนั้นเพิ่มขอบที่ขรุขระรอบ ๆ คน แต่ฉันคิดว่าเราควรอนุญาต บางทีฉันอาจให้อภัยเกินไป: |
Senthil

1

กรอบงาน PHP ของฉันใช้

SET LOCAL time_zone='Whatever'

เปิดหลังจากเชื่อมต่อโดยที่ ' Anything ' == date_default_timezone_get ()

ไม่ใช่โซลูชันของฉัน แต่สิ่งนี้ทำให้มั่นใจได้ว่าSYSTEMเขตเวลาของเซิร์ฟเวอร์ MySQL จะเหมือนกับ PHP ของทุกครั้ง

ดังนั้นใช่ PHP มีการประกาศอย่างมากและสามารถส่งผลกระทบต่อมัน


1

เพื่อให้ได้เวลาปัจจุบันตามเขตเวลาของคุณคุณสามารถใช้ต่อไปนี้ (ในกรณีของฉันคือ '+5: 30')

เลือก DATE_FORMAT (convert_tz (ตอนนี้ (), @@ เซสชัน.time_zone, '+ 05:30'), '% Y-% m-% d')


0

คุณต้องรีสตาร์ท mysqld หลังจากเปลี่ยนเขตเวลาของ System ..

โซนเวลาส่วนกลางของ MySQL ใช้เขตเวลาของระบบ เมื่อคุณเปลี่ยนแอททริบิวต์ของระบบคุณต้องรีสตาร์ท Mysqld


หลังจากเปลี่ยนเขตเวลาในระบบปฏิบัติการแทรก mysql จะใช้เขตเวลาใหม่ แต่เลือกตอนนี้ (); และเลือก current_timestamp; คำสั่งจะยังคงใช้เขตเวลาเก่า ในการซิงค์สิ่งเหล่านี้บริการ mysql จะต้องเริ่มต้นใหม่
Manoj Kumar G

0

แทรกบันทึกจำลองจากฐานข้อมูลของคุณที่มีการประทับเวลาเลือกบันทึกนั้นและรับค่าการประทับเวลา ลบบันทึกนั้น รับค่าเขตเวลาที่เซิร์ฟเวอร์ใช้เพื่อเขียนข้อมูลและละเว้นเขตเวลา PHP


0

คุณสามารถลองต่อไปนี้:

select sec_to_time(TIME_TO_SEC( curtime()) + 48000);

ที่นี่คุณสามารถระบุความแตกต่างของเวลาเป็นวินาที


1
คุณไม่ควรเพิ่มและลบออฟเซ็ต ด้วยเวลากลางวันที่บอกว่ากฎ ฯลฯ มันเป็นเขตที่วางทุ่นระเบิด
eweb

0

ใช้LPAD(TIME_FORMAT(TIMEDIFF(NOW(), UTC_TIMESTAMP),’%H:%i’),6,’+')จะได้รับความคุ้มค่าในรูปแบบเขตเวลาของ MySQL CONVERT_TZ()ที่คุณสะดวกสามารถใช้กับ โปรดทราบว่าเขตเวลาชดเชยที่คุณได้รับจะมีผลเฉพาะช่วงเวลาที่มีการประเมินการแสดงออกเนื่องจากการชดเชยอาจเปลี่ยนแปลงตลอดเวลาหากคุณมีเวลาออมแสง แต่การแสดงออกมีประโยชน์ร่วมกับNOW()การจัดเก็บชดเชยกับเวลาท้องถิ่นซึ่ง disambiguates สิ่งที่NOW()ให้ผลผลิต (ในเขตเวลา DST NOW()กระโดดกลับไปหนึ่งชั่วโมงต่อปีดังนั้นจึงมีค่าซ้ำกันสำหรับจุดที่แตกต่างกันในเวลา)


0

มันอาจจะ

select timediff(current_time(),utc_time())

คุณจะไม่ได้รับค่าเขตเวลาโดยตรงด้วยวิธีนี้

@@global.time_zone'SYSTEM'ไม่สามารถใช้มันเป็นตัวแปรและผลตอบแทนที่คุ้มค่า

หากคุณจำเป็นต้องใช้คำค้นหาของคุณในเซสชั่นที่มีการเปลี่ยนแปลงเขตเวลาโดยใช้ แล้วคุณจะได้รับด้วยsession SET TIME_ZONE = @@session.time_zoneหากคุณสอบถามแล้วคุณจะได้รับ@@global.time_zone'SYSTEM'

ถ้าคุณพยายามที่datediff, date_subหรือtimediffด้วยnow()และutc_time()จากนั้นคุณอาจจะใช้เป็นประเด็นการแปลง

แต่สิ่งที่แนะนำข้างต้นอาจใช้ได้กับเซิร์ฟเวอร์บางรุ่นเป็นอย่างน้อย รุ่นของฉันคือ 5.5.43-37 และเป็นทางออกที่โฮสต์


สิ่งนี้ไม่ได้ตอบคำถามอย่างชัดเจน บางทีคุณสามารถแก้ไขได้เพื่อมุ่งเน้นคำถามที่ถาม
Mogsdad

-3

ลองใช้รหัสต่อไปนี้:

//ASP CLASSIC
Set dbdate = Server.CreateObject("ADODB.Recordset")
dbdate.ActiveConnection = MM_connection
dbdate.Source = "SELECT NOW() AS currentserverdate "
dbdate.Open()
currentdate = dbdate.Fields("currentserverdate").Value
response.Write("Server Time is "&currentdate)
dbdate.Close()
Set dbdate = Nothing
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.