[CONJS-154] Timezone support correction and clarification Created: 2020-11-13  Updated: 2020-12-04  Resolved: 2020-12-04

Status: Closed
Project: MariaDB Connector/node.js
Component/s: other
Affects Version/s: None
Fix Version/s: 2.5.2

Type: Bug Priority: Major
Reporter: Diego Dupin Assignee: Diego Dupin
Resolution: Fixed Votes: 0
Labels: None


 Description   

Actual timezone support has 2 issues,

  • use of moment.setDefault that can be changed by the environment.
  • when using timezone, connection default timezone is not set, possibly causing issue with function sensible to timezone, like NOW()

Additionally, documentation is missing a detailed description.

Here is the documentation change proposal:

Timezone consideration

Client and database can have a different timezone.

The connector has different solutions when this is the case.
the `timezone` option can have the following value:

  • 'local' (default) : connector doesn't do any conversion. If the database has a different timezone, there will be an offset issue.
  • 'auto' : connector retrieve server timezone. Dates will be converted if server timezone differs from client
  • IANA timezone / offset, example 'America/New_York' or '+06:00'.

IANA timezone / offset

When using IANA timezone, the connector will set the connection timezone to the timezone.
this can throw an error on connection if timezone is unknown by the server (see mariadb timezone documentation, timezone table might be not initialized)
If you are sure the server is using that timezone, this step can be skipped with the option `skipSetTimezone`.

If timezone correspond to javascript default timezone, then no conversion will be done

Recommendation.

The best is to have the same timezone on client and database, then keep the 'local' default value.

If different, then either client or server has to convert date.
In general, that is best to use client conversion, to avoid putting any unneeded stress on the database.
timezone has to be set to the IANA timezone corresponding to server timezone and disabled `skipSetTimezone` option since you are sure that the server has the corresponding timezone.

example: client use 'America/New_York' by default, and server 'America/Los_Angeles'.
execute 'SELECT @@system_time_zone' on the server. that will give the server default timezone.
the server can return POSIX timezone like 'PDT' (Pacific Daylight Time).
IANA correspondence must be found : (see IANA timezone List) and configure client-side.
This will ensure DST (automatic date saving time change will be handled)


Generated at Thu Feb 08 03:23:08 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.