Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да задам часовата зона на MySQL?

Мислех, че това може да е полезно:

Има три места, където часовата зона може да бъде зададена в 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";

И двете може да върнат SYSTEM, което означава, че използват часовата зона, зададена в 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 времеви печат

SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`

За да получите UTC колона за дата и час като UNIX времеви печат

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

Забележка:Промяната на часовата зона няма да промени съхранената дата и час , но ще показва различна дата и час за съществуващите колони с времеви клеймо, тъй като те се съхраняват вътрешно като UTC времеви печати и се показват външно в текущата часова зона на MySQL.

Направих cheatsheet тук:Трябва ли часова зона на MySQL да бъде зададена на UTC?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Експортирайте MySQL или MariaDB база данни

  2. Escape низ на Python за MySQL

  3. ER_NOT_SUPPORTED_AUTH_MODE - MySQL сървър

  4. Как да се свържете с база данни с помощта на Sequel Pro

  5. Как да проверя дали колона е празна или нула в MySQL?