タイムゾーン
目次
Machbase のタイムゾーン
クライアントのタイムゾーンは、それぞれのセッション内でのみ有効です。
一般には、日時文字列にタイムゾーンを付けて指定します。
"YYYY-MM-DD HH24:MI:SS ZZZ(Timezone String)"
例)
"12:06:56.568+01:00"
"2006.07.10 at 15:08:56 -05:00"
"09 AM, GMT+09:00"この方式では、日時ごとにタイムゾーンを指定する手間がかかり、大量のデータに含めると転送量もデータ件数に比例して増加します。
そのため Machbase は、クライアントとサーバーの接続セッションにタイムゾーンを設定する方式をサポートします。
タイムゾーンは次のように動作します。
サーバーは、インストール先 OS の既定のタイムゾーンで動作します。
明示的な設定がなければ、OS のタイムゾーンを読み取って使用します。クライアントがタイムゾーンを指定せずに接続すると、サーバーの設定を引き継ぎます。
サーバーの TIMEZONE が KST なら、クライアントも KST で動作します。クライアントが明示的に指定した場合、そのセッションは指定したタイムゾーンで動作します。
サーバーが KST でも、クライアントが接続時に EDT を指定すれば、そのセッションは EDT で動作します。
タイムゾーンの指定形式
指定を簡単にするため、Machbase は 5 文字の単一形式を使用します。
先頭は + または -、続く 2 桁は時(00 ~ 23)、最後の 2 桁は分(00 ~ 59)です。
サポートする TIMEZONE の形式を示します。
例)
TIMEZONE=+0900
TIMEZONE=-0900machsql
起動時に次のオプションでタイムゾーンを指定します。
-z, --timezone=+-HHMM現在の設定は SHOW TIMEZONE コマンドで確認できます。
SHOW TIMEZONE;
Mach> show timezone;
Timezone : +0900machloader
実行時に次のオプションでタイムゾーンを指定します。
-z, --timezone=+-HHMM指定したタイムゾーンで接続し、その設定に基づいて時刻を計算します。
SDK
接続文字列の TIMEZONE で、セッションのタイムゾーンを指定できます。
TIMEZONE を省略した場合は、サーバーのタイムゾーンを使用します。
CLI、ODBC、JDBC、DOTNET で共通です。
接続文字列の例
SERVER=127.0.0.1;UID=SYS;PWD=MANAGER;CONNTYPE=1;NLS_USE=UTF8;PORT_NO=5656;TIMEZONE=+0300REST API
REST API は、リクエストの HTTP ヘッダーで指定したタイムゾーンを使用します。
ヘッダー名は The-Timezone-Machbase です。次のように指定します。
Authorization: Basic XXXXXXXXXXXXXXXXXXX
...................
The-Timezone-Machbase: +0900
...............上記の形式で、使用するタイムゾーン文字列を指定します。
省略した場合は、サーバーのタイムゾーンを使用します。
リクエストの例:UTC を指定
curl -H "The-Timezone-Machbase: +0000" -G "http://127.0.0.1:5657/machbase" \
--data-urlencode 'q=select sysdate from v$tables limit 1'{
"error_code": 0,
"error_message": "",
"columns": [
{
"name": "sysdate",
"type": 6,
"length": 31
}
],
"timezone": "+0000",
"data": [
{
"sysdate": "2026-06-13 07:58:30 328:941:439"
}
]
}結果の JSON の timezone 項目に、適用されたタイムゾーンが返されます。