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

Как да настроите наречени часови зони в MariaDB

Ако искате да използвате наименувани часови зони в MariaDB, ще трябва да се уверите, че са конфигурирани.

Под „именувани часови зони“ имам предвид възможността да използвате низове като America/Los_Angeles вместо −08:00 или −07:00 при определяне на часовата зона. Например, когато използвате CONVERT_TZ() функция.

Ето как да конфигурирате наименувани часови зони в MariaDB.

Таблици с часовите зони

MariaDB има следните таблици с часови зони в mysql база данни:

  • time_zone
  • time_zone_leap_second
  • time_zone_name
  • time_zone_transition
  • time_zone_transition_type

По подразбиране тези таблици се създават, но не се попълват.

За да използвате наименувани часови зони, трябва да попълните тези таблици. Методът за това ще зависи от вашата система (т.е. дали вашата система всъщност съдържа информация за часовата зона или не).

Системи, подобни на Unix

Причината, поради която горните таблици с часовите зони са празни по подразбиране, е, че обикновено е по-добре системата да обработва часовата зона, ако е възможно.

Повечето подобни на Unix системи като Linux, Mac OS X, FreeBSD и Solaris имат база данни zoneinfo. Тази база данни за zoneinfo може да бъде заредена в таблиците с часовите зони в MariaDB с mysql_tzinfo_to_sql полезност.

Ако вашата система съдържа база данни за zoneinfo, за предпочитане е да използвате този метод за попълване на таблиците с часовите зони. В противен случай може да предизвикате разлика в обработката на дата и час между MariaDB и други приложения във вашата система.

За да заредите таблиците с часовите зони, отворете прозорец на терминала и изпълнете следното:

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

Въведете паролата за root потребител. Ако получите грешка „отказан достъп“, вижте тази корекция.

Това е. Таблиците с часовите зони трябва да бъдат попълнени.

В моя случай получих едно предупреждение:

Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.

Това предупреждение може безопасно да бъде игнорирано.

Това предупреждение вероятно се дължи на факта, че Unix-подобните системи не включват високосни секунди. Тоест, Unix-подобните системи нямат начин да представят високосната секунда под формата на 23:59:60 . Вместо това просто използва една и съща секунда два пъти.

Това се придържа към стандарта POSIX (интерфейс на портативна операционна система), който изисква високосните секунди да бъдат пропуснати от отчетеното време.

Windows, HP-UX системи

Някои системи, като Windows и HP-UX, нямат база данни за zoneinfo, така че ще трябва да заредите таблиците с часовите зони чрез SQL скрипт, ако използвате тези операционни системи.

Вижте документацията на MySQL за скриптовете и инструкциите за инсталиране.

Проверете таблиците с часовите зони

След като таблиците с часовите зони бъдат попълнени, можем да изпълним бърза заявка, за да проверим дали те всъщност са попълнени.

Пример:

SELECT * 
FROM mysql.time_zone_name
LIMIT 10;

Резултат:

+--------------------+--------------+
| Name               | Time_zone_id |
+--------------------+--------------+
| Africa/Abidjan     |            1 |
| Africa/Accra       |            2 |
| Africa/Addis_Ababa |            3 |
| Africa/Algiers     |            4 |
| Africa/Asmara      |            5 |
| Africa/Asmera      |            6 |
| Africa/Bamako      |            7 |
| Africa/Bangui      |            8 |
| Africa/Banjul      |            9 |
| Africa/Bissau      |           10 |
+--------------------+--------------+

В този случай избрах първите 10 резултата от time_zone_name маса.

Ето пълния брой:

SELECT COUNT(*) 
FROM mysql.time_zone_name;

Резултат:

+----------+
| COUNT(*) |
+----------+
|      594 |
+----------+

Можете да преминете през другите таблици според нуждите.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате и защитите MariaDB на CentOS 8

  2. Как да получите името на краткия ден от дата в MariaDB

  3. Надстройка на MariaDB 10.0 до 10.3.9 на Ubuntu 16.04

  4. Как да защитите вашата MySQL или MariaDB база данни от SQL инжекция:Част първа

  5. 3 начина да получите съпоставянето на сървъра в MariaDB