How do I set the time zone of MySQL?

后端 未结 20 3254
闹比i
闹比i 2020-11-21 07:07

On one server, when I run:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2009-05-30 16:54:29 |
+---------         


        
相关标签:
20条回答
  • 2020-11-21 07:32

    From MySQL Workbench 8.0 under the server tab, if you go to Status and System variables you can set it from here.

    0 讨论(0)
  • 2020-11-21 07:33

    Keep in mind, that 'Country/Zone' is not working sometimes... This issue is not OS, MySQL version and hardware dependent - I've met it since FreeBSD 4 and Slackware Linux in year 2003 till today. MySQL from version 3 till latest source trunk. It is ODD, but it DOES happens. For example:

    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#
    

    And a statement like that is supposed to work:

    SET time_zone='US/Eastern';
    

    But you have this problem:

    Error Code: 1298. Unknown or incorrect time zone: 'EUS/Eastern'

    Take a look at the subfolder in your zone information directory, and see the ACTUAL filename for symlink, in this case it's EST5EDT. Then try this statement instead:

    SET time_zone='EST5EDT';
    

    And it's actually working as it is supposed to! :) Keep this trick in mind; I haven't seen it to be documented in MySQL manuals and official documentation. But reading the corresponding documentation is must-do thing: MySQL 5.5 timezone official documentation - and don't forget to load timezone data into your server just like that (run as root user!):

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

    Trick number one - it must be done exactly under MySQL root user. It can fail or produce non-working result even from the user that has full access to a MySQL database - I saw the glitch myself.

    0 讨论(0)
  • 2020-11-21 07:33

    You can specify the server's default timezone when you start it, see http://dev.mysql.com/doc/refman/5.1/en/server-options.html and specifically the --default-time-zone=timezone option. You can check the global and session time zones with

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

    set either or both with the SET statement, &c; see http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html for many more details.

    0 讨论(0)
  • 2020-11-21 07:36

    You have to set up the your location timezone. So that follow below process
    Open your MSQLWorkbench write a simple sql command like this;

    select now();
    

    And also your url could be like this;

    url = "jdbc:mysql://localhost:3306/your_database_name?serverTimezone=UTC";
    
    0 讨论(0)
  • 2020-11-21 07:38

    When you can configure the time zone server for MySQL or PHP:

    Remember:

    1. Change timezone system. Example for Ubuntu:

      $ sudo dpkg-reconfigure tzdata
      
    2. Restart the server or you can restart Apache 2 and MySQL:

      /etc/init.d/mysql restart
      
    0 讨论(0)
  • 2020-11-21 07:40

    To set it for the current session, do:

    SET time_zone = timezonename;
    
    0 讨论(0)
提交回复
热议问题