DatabricksのTIMESTAMP_NTZタイプ

[TIMESTAMP\_NTZ type \| Databricks on AWS](https://docs.databricks.com/sql/language-manual/data-types/timestamp-ntz-type.html) [2023/5/11時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

年、月、日、時、分、秒のフィールドの値から構成される値を表現します。すべてのオペレーションはタイムゾーンを考慮しないで実行されます。

この機能は[パブリックプレビュー](https://docs.databricks.com/release-notes/release-types.html)です。サポートされない機能に関しては[注意](#注意)セクションをご覧ください。

Delta Lakeにこの機能を使用するには、テーブルでサポートを有効化する必要があります。`TIMESTAMP_NTZ`タイプのカラムを持つ新規Deltaテーブルを作成した際には、機能サポートは自動で有効化されます。`TIMESTAMP_NTZ`カラムのサポートを有効化するには、既存テーブルでは明示的に機能を有効化しなくてはなりません。

サポートの有効化によってテーブルプロトコルをアップグレードします。[How does Databricks manage Delta Lake feature compatibility?](https://docs.databricks.com/delta/feature-compatibility.html)をご覧ください。以下のコマンドはこの機能を有効化します:

```sql:SQL
ALTER TABLE table_name SET TBLPROPERTIES ('delta.feature.timestampNtz' = 'supported')
```

# 構文

```
TIMESTAMP_NTZ
```

# 制限

サポートされるタイムスタンプのレンジは、`June 23 -5877641 CE`から`July 11 +5881580 CE`です。

# リテラル

```
TIMESTAMP_NTZ timestampString

timestampString
{ '[+|-]yyyy[...]' |
  '[+|-]yyyy[...]-[m]m' |
  '[+|-]yyyy[...]-[m]m-[d]d' |
  '[+|-]yyyy[...]-[m]m-[d]d ' |
  '[+|-]yyyy[...]-[m]m-[d]d[T][h]h[:]' |
  '[+|-]yyyy[..]-[m]m-[d]d[T][h]h:[m]m[:]' |
  '[+|-]yyyy[...]-[m]m-[d]d[T][h]h:[m]m:[s]s[.]' |
  '[+|-]yyyy[...]-[m]m-[d]d[T][h]h:[m]m:[s]s.[ms][ms][ms][us][us][us]' }
```

- `+`か`-`: オプションの符号。`-`はBCE、`+`はCE(デフォルト)となります。
- `yyyy`: 最低4桁の年。
- `[m]m`: 01から12の1桁あるいは2桁の月。
- `[d]d`: 01から31の1桁あるいは2桁の日。
- `h[h]`: 00から23の1桁あるいは2桁の時。
- `m[m]`: 00から59の1桁あるいは2桁の分。
- `s[s]`: 00から59の1桁あるいは2桁の秒。
- `[ms][ms][ms][us][us][us]`: 最大6桁の小数点の秒。

月や日のコンポーネントが指定されない場合、デフォルト値は1となります。時、分、秒のコンポーネントが指定されない場合、デフォルト値は0となります。

リテラルが適切なタイムスタンプを表現しない場合、レラーが発声します。

# 注意

- 現在、`TIMESTAMP_NTZ`タイプは以下ではサポートされていません:
    - [Photon](https://www.databricks.com/jp/product/photon)
    - [Delta Sharing](https://www.databricks.com/jp/product/delta-sharing)
    - Power BI、Tableau、Databricks JDBC/ODBCドライバー、Databricksオープンソースドライバーで使用されるDatabricksデータソース。
- `TIMESTAMP_NTZ`タイプは、Delta/Parquet/ORC/AVRO/JSON/CSVを含むファイルソースでサポートされています。しかし、TIMESTAMP_NTZカラムを持つJSON/CSVファイルのスキーマ推定では制限があります。後方互換性のために、`spark.read.csv(...)`や`spark.read.json(...)`から推定されるデフォルトのタイムスタンプタイプは、TIMESTAMP_NTZではなくTIMESTAMPタイプです。

# サンプル

```sql:SQL
> SELECT TIMESTAMP_NTZ'0000';
  0000-01-01 00:00:00

> SELECT TIMESTAMP_NTZ'2020-12-31';
  2020-12-31 00:00:00

> SELECT TIMESTAMP_NTZ'2021-7-1T8:43:28.123456';
  2021-07-01 08:43:28.123456

> SELECT current_timezone(), CAST(TIMESTAMP '2021-7-1T8:43:28' as TIMESTAMP_NTZ);
  America/Los_Angeles 2021-07-01 08:43:28

> SELECT CAST('1908-03-15 10:1:17' AS TIMESTAMP_NTZ)
  1908-03-15 10:01:17

> SELECT TIMESTAMP_NTZ'+10000';
  +10000-01-01 00:00:00
```

# 関連情報

- [TIMESTAMP type](https://docs.databricks.com/sql/language-manual/data-types/timestamp-type.html)
- [DATE type](https://docs.databricks.com/sql/language-manual/data-types/date-type.html)
- [INTERVAL type](https://docs.databricks.com/sql/language-manual/data-types/interval-type.html)
- [cast function](https://docs.databricks.com/sql/language-manual/functions/cast.html)

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)