---
title: あなたの知らないタイムスタンプの世界
tags: 
author: [Satoshi ENOMOTO](https://docswell.com/user/satoshi_enomoto)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4JMYP89VJW.jpg?width=480
description: Microsoft Data Analytics Day(Online) 勉強会 2026/07_発表資料 ユーザーグループ: https://sqlserver.connpass.com/ Qiita: https://qiita.com/satoshi_enomoto
published: July 28, 26
canonical: https://docswell.com/s/satoshi_enomoto/K4NLLJ-2026-07-28-184926
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/4JMYP89VJW.jpg)

Microsoft Data Analytics Day (Online) 勉強会
あなたの知らないタイムスタンプの世界
発表者：Satoshi Enomoto
2026/07/28


# Page. 2

![Page Image](https://bcdn.docswell.com/page/PJR915GW79.jpg)

はじめに
•
•
日時は一見単純に見えるが、以下が絡むため問題になることがある
✓ タイムゾーン
地域によって時刻の基準が異なる
✓ UTC / JST
同じ時間でも表示が変わる
✓ サマータイム
夏と冬で時刻のオフセットが変わる
✓ セッション設定
システムやユーザーの設定で解釈が変わる
✓ 型の違い
TIMESTAMP の種類によって保持する情報が異なる
システムごとの TIMESTAMP 型の特徴を理解しておかないと連携・移行時に問題が発生する
Databricks
TIMESTAMP (LTZ)
TIMESTAMP_NTZ
Snowflake
TIMESTAMP_NTZ
TIMESTAMP_LTZ
TIMESTAMP_TZ
Fabric
datetime2
datetimeoffset
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/PEXQYKXVJX.jpg)

Databricks の TIMESTAMP
•
Databricks (Spark) には TIMESTAMP 型が２種類存在する
TIMESTAMP (LTZ)
TIMESTAMP_NTZ
UTC に正規化して保存し、
表示時にセッションタイムゾーンを適用
タイムゾーン情報を持たない時刻
保存される値のイメージ
2026-01-01 03:00:00
（UTC として保存）
2026-01-01 12:00:00
（タイムゾーンなし）
表示（SELECT 時）
※セッションタイムゾーン：
Asia/Tokyo
2026-01-01 12:00:00
（UTC → JST に変換）
2026-01-01 12:00:00
（変わらない）
特徴
用途のイメージ
•
•
グローバルなイベント時刻の記録
ユーザのタイムゾーンに合わせて表示したい
場合
•
•
特定のタイムゾーンに依存しない時刻
他システムとの時刻一致を重視する場合
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/3EK935W5ED.jpg)

Databricks の TIMESTAMP
•
TIMESTAMP, TIMESTAMP_NTZ の各カラムに `2026-01-01 12:00:00 +09:00` の文字列を挿入し、
SELECTした結果
✓ セッションタイムゾーンを `UTC` とした場合
✓ セッションタイムゾーンを `Asia/Tokyo` とした場合
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/L73WGK1175.jpg)

Databricks の TIMESTAMP
•
TIMESTAMP および TIMESTAMP_NTZ の最大精度は６桁
✓ TIMESTAMP
TIMESTAMP 型 - Azure Databricks - Databricks SQL |
Microsoft Learn
✓ TIMESTAMP_NTZ
TIMESTAMP_NTZ 型 - Azure Databricks - Databricks SQL |
Microsoft Learn
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/87DK13XKJG.jpg)

Databricks の TIMESTAMP
•
TIMESTAMP および TIMESTAMP_NTZ の最大精度は６桁
✓ ６桁以上を挿入しても、保持されていない
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/VJPKQ4P3E8.jpg)

Snowflake の TIMESTAMP
•
Snowflake には TIMESTAMP 型が３種類存在する
TIMESTAMP_NTZ
TIMESTAMP_LTZ
TIMESTAMP_TZ
タイムゾーン情報を持たない時刻
UTC に正規化して保存し、
表示時にセッションタイムゾーンを適用
時刻とタイムゾーン（オフセット）を保持
保存される値のイメージ
2026-01-01 12:00:00
（タイムゾーンなし）
2026-01-01 03:00:00
（UTC として保存）
2026-01-01 12:00:00 +0900
（タイムゾーンを保持）
表示（SELECT 時）
※セッションタイムゾーン：
Asia/Tokyo
2026-01-01 12:00:00
（変わらない）
2026-01-01 12:00:00
（UTC → JST に変換）
2026-01-01 12:00:00 +0900
（タイムゾーンを維持）
特徴
•
用途のイメージ
備考
•
•
•
特定のタイムゾーンに依存しない
時刻
他システムとの時刻一致を重視
する場合
•
•
グローバルなイベント時刻の記録
ユーザのタイムゾーンに合わせて表示
したい場合
•
タイムゾーンそのものが重要な場合
TIMESTAMP 型のデフォルトは
NTZ となる
DATETIME は NTZ と同義
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/2EVV5X2NEQ.jpg)

Snowflake の TIMESTAMP
•
TIMESTAMP_NTZ, TIMESTAMP_LTZ, TIMESTAMP_TZ, TIMESTAMP, DATETIME の各カラムに
`2026-01-01 12:00:00 +09:00` の文字列を挿入し、 SELECTした結果
✓ セッションタイムゾーンを `UTC` とした場合
✓ セッションタイムゾーンを `Asia/Tokyo` とした場合
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/57GL6VR5EL.jpg)

Snowflake マネージド Iceberg テーブルの TIMESTAMP
•
Snowflake マネージド Iceberg テーブルは TIMESTAMP_NTZ (timestamp) と TIMESTAMP_LTZ
(timestamptz) をサポートしているが、 Snowflake テーブルとデフォルトの精度が異なる
✓ Snowflake テーブルのデフォルトの精度は9、一方で Iceberg テーブルのデフォルトの精度は6
日付と時刻のデータ型 | Snowflake Documentation
Apache Iceberg
テーブルのデータ型 | Snowflake Documentation
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/4EQY46VLJP.jpg)

Snowflake マネージド Iceberg テーブルの TIMESTAMP
•
Snowflake マネージド Iceberg テーブルは TIMESTAMP_NTZ (timestamp) と TIMESTAMP_LTZ
(timestamptz) をサポートしているが、 Snowflake テーブルとデフォルトの精度が異なる
✓ Snowflake テーブルの挙動
✓ Iceberg テーブルの挙動
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/KJ4WQ4M571.jpg)

Snowflake マネージド Iceberg テーブルの TIMESTAMP
•
ただし、Snowflake マネージド Iceberg テーブルで v3 （プレビュー）を利用する場合、ナノ秒精度をサポートする
✓ Iceberg v3 の場合、TIMESTAMP_NTZ(9), TIMESTAMP_LTZ(9) をサポートする
Apache Iceberg
テーブルのデータ型 | Snowflake Documentation
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/LE1YP4827G.jpg)

Snowflake マネージド Iceberg テーブルの TIMESTAMP
•
ただし、Snowflake マネージド Iceberg テーブルで v3 （プレビュー）を利用する場合、ナノ秒精度をサポートする
✓ 明示的に桁数を指定することでナノ秒精度まで保持することが可能
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/GEWG2XZ2J2.jpg)

Databricks マネージド Iceberg テーブルの TIMESTAMP
•
一方、Databricks マネージド Iceberg テーブル v3 はナノ秒精度をサポートしていない
✓ 制限事項として記載あり
Apache Iceberg v3 の機能を使用する - Azure Databricks | Microsoft Learn
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/47ZLD614J3.jpg)

Databricks マネージド Iceberg テーブルの TIMESTAMP
•
一方、Databricks マネージド Iceberg テーブル v3 はナノ秒精度をサポートしていない
✓ TIMESTAMP / TIMESTAMP_NTZ どちらも６桁までしか保持しない
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/YJ6W12LGJV.jpg)

Fabric の TIMESTAMP について
•
ウェアハウス（T-SQL）では datetime2 になり、レイクハウスでは Databricks (Spark) と同様の挙動となる
✓ ウェアハウス
➢
➢
➢
TIMESTAMP_NTZ については、ショートカットやミラーリングの際に制約がある可能性
あり
Microsoft Fabric において TIMESTAMP_NTZ 型カラムを含むテーブルで
メタデータ仮想化が失敗する事象 #Snowflake – Qiita
解決:Re: ミラーされたAzure Databricksカタログが欠落しています...Microsoft Fabricコミュニティ
✓ レイクハウス
OneLake で Iceberg テーブルを使用する - Microsoft Fabric |
Microsoft Learn
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/GJ5M421XJ4.jpg)

システム間の連携で考慮すべき注意点
•
注意点1：タイムゾーンの解釈差異
Snowflake
TIMESTAMP に日本時間として
`2026-01-01 12:00:00`を保持
Databricks
TIMESTAMP に保持すると
`2026-01-01 12:00:00 +00:00`となる
JST として運用
JST として運用すると +09:00 となってしまう
✓ TIMESTAMPのまま ±9時間するか、もしくは TIMESTAMP_NTZを検討する
•
注意点2：精度の差異
Snowflake
TIMESTAMP は９桁精度
`2026-01-01 12:00:00.123456789`
Databricks
TIMESTAMP は６桁精度のため桁落ちが発生
`2026-01-01 12:00:00.123456`
✓ ナノ秒まで重要な場合は文字列を検討する
✓ Snowflake で Iceberg v2 に変換する際にも同様の問題が発生する
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/9E29V41Q7R.jpg)

システム間の連携で考慮すべき注意点
•
注意点3：特定の条件下で、フィルタリングで指定する値のデータ型の差異により性能悪化が発生
✓ 例：Databricks にて TIMESTAMP_NTZ 型のカラムに対して TIMESTAMP 型の値でフィルタリング
Databricks
DECLARE OR REPLACE VARIABLE var_ts_ltz TIMESTAMP;
SET VAR var_ts_ltz = (
SELECT timestamp &#039;1998-01-01T00:00:00.000’
);
SELECT
*
FROM
cat_01.schema_01.table
WHERE
col_ts_ntz &gt;= var_l_ship_ts_ltz
TIMESTAMP_NTZ 型
➢
➢
TIMESTAMP 型
実際にプルーニングされない状況が発生するのはもっと複雑な条件となる
詳細はこちら：Databricks にて TIMESTAMP_NTZ 列を TIMESTAMP でフィルタしたら実行時間が約470倍になった話 ― データスキップが効かなくなる落
とし穴 #Databricks - Qiita
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/D7Y43MZYEM.jpg)

ご清聴ありがとうございました！


