MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak skonfigurować nazwane strefy czasowe w MariaDB?

Jeśli chcesz używać nazwanych stref czasowych w MariaDB, musisz się upewnić, że zostały one skonfigurowane.

Przez „nazwane strefy czasowe” mam na myśli możliwość używania ciągów takich jak America/Los_Angeles zamiast −08:00 lub −07:00 podczas określania strefy czasowej. Na przykład przy użyciu funkcji CONVERT_TZ() funkcja.

Oto jak skonfigurować nazwane strefy czasowe w MariaDB.

Tabele stref czasowych

MariaDB ma następujące tabele stref czasowych w mysql baza danych:

  • time_zone
  • time_zone_leap_second
  • time_zone_name
  • time_zone_transition
  • time_zone_transition_type

Domyślnie te tabele są tworzone, ale nie są wypełniane.

Aby używać nazwanych stref czasowych, musisz wypełnić te tabele. Sposób wykonania tego będzie zależeć od twojego systemu (tj. Czy twój system faktycznie zawiera informacje o strefie czasowej).

Systemy podobne do Uniksa

Powodem, dla którego powyższe tabele stref czasowych są domyślnie puste, jest to, że zazwyczaj lepiej jest, jeśli system obsługuje strefę czasową, jeśli to możliwe.

Większość systemów uniksopodobnych, takich jak Linux, Mac OS X, FreeBSD i Solaris, ma bazę danych zoneinfo. Ta baza danych zoneinfo może być załadowana do tabel stref czasowych w MariaDB za pomocą mysql_tzinfo_to_sql narzędzie.

Jeśli twój system zawiera bazę danych zoneinfo, lepiej jest użyć tej metody do wypełnienia tabel stref czasowych. W przeciwnym razie możesz spowodować różnicę w obsłudze daty i godziny między MariaDB a innymi aplikacjami w systemie.

Aby załadować tabele stref czasowych, otwórz okno terminala i uruchom następujące polecenie:

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

Wprowadź hasło dla root użytkownik. Jeśli pojawi się błąd „odmowa dostępu”, zapoznaj się z tą poprawką.

Otóż ​​to. Tabele stref czasowych powinny być teraz wypełnione.

W moim przypadku dostałem jedno ostrzeżenie:

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

To ostrzeżenie można bezpiecznie zignorować.

To ostrzeżenie prawdopodobnie wynika z faktu, że systemy uniksopodobne nie uwzględniają sekund przestępnych. Oznacza to, że systemy uniksopodobne nie mają możliwości przedstawienia sekundy przestępnej w postaci 23:59:60 . Zamiast tego używa tej samej sekundy dwa razy.

Jest to zgodne ze standardem POSIX (Portable Operating System Interface), który wymaga pomijania sekund przestępnych w raportowanym czasie.

Windows, systemy HP-UX

Niektóre systemy, takie jak Windows i HP-UX, nie mają bazy danych informacji o strefach, więc jeśli używasz tych systemów operacyjnych, musisz załadować tabele stref czasowych za pomocą skryptu SQL.

Zapoznaj się z dokumentacją MySQL, aby zapoznać się ze skryptami i instrukcjami instalacji.

Sprawdź tabele stref czasowych

Po wypełnieniu tabel stref czasowych możemy uruchomić szybkie zapytanie, aby sprawdzić, czy są one rzeczywiście wypełnione.

Przykład:

SELECT * 
FROM mysql.time_zone_name
LIMIT 10;

Wynik:

+--------------------+--------------+
| 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 |
+--------------------+--------------+

W tym przypadku wybrałem 10 najlepszych wyników z time_zone_name stół.

Oto pełna liczba:

SELECT COUNT(*) 
FROM mysql.time_zone_name;

Wynik:

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

W razie potrzeby możesz przeglądać inne tabele.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zainstalować i skonfigurować MaxScale dla MariaDB

  2. Odzyskiwanie instancji mySQL z innego konta użytkownika (macOS)

  3. MariaDB JSON_EXISTS() Objaśnienie

  4. MariaDB JSON_CONTAINS_PATH () Wyjaśnione

  5. Jak FROM_BASE64() działa w MariaDB?