Question#5(DP-420)

Question#5(DP-420)

あなたは Azure サブスクリプションを所有しており、その中には Azure Cosmos DB for NoSQL アカウントが含まれています。

複数のアイテムを返す SQL クエリを記述する必要があります。ソリューションは以下の要件を満たす必要があります。
  • 返される各アイテムに、ISO 8601 文字列としてフォーマットされた現在の協定世界時 (UTC) の日付と時刻を含めること。
  • 開発の労力を最小限に抑えること。
あなたは何を使用すべきですか?
ディスカッション 0

正解:C

この問題は、Azure Cosmos DB の組み込み関数(Built-in functions)の戻り値の型とフォーマットの違いを理解しているかを問うています。

1. なぜ「(GetCurrentDateTime)」が正解なのか
  • フォーマットの要件: 要件には「ISO 8601 文字列」と指定されています。
  • 動作: GetCurrentDateTime() 関数は、現在の UTC 日付と時刻を、まさに ISO 8601 フォーマット(例: 2026-01-17T22:54:11.1234567Z)の文字列として返します。
  • 開発労力: 組み込み関数をそのまま呼び出すだけなので、追加のコード(UDF など)を記述する必要がなく、開発労力が最小限で済みます。
2. 他の選択肢が不適切な理由
  • (UDF): 独自の関数を JavaScript で記述・登録すれば同じことが可能ですが、組み込み関数が存在するため「開発労力を最小限に抑える」という要件に反します。
  • (GetCurrentTimestamp): この関数は、現在の UTC 日付と時刻を**数値(Unix タイムスタンプ、ミリ秒単位)**として返します。ISO 8601 文字列ではないため不適切です。
  • (DateTimePart): この関数は、指定された日付文字列から「年」や「月」などの特定の部分を抽出するための関数です。現在の時刻を取得するものではありません。
参考:Cosmos DB での日付の扱い Cosmos DB には「DateTime」という専用のデータ型は存在しません。日付を扱う場合は、以下のいずれかの形式で保存・管理するのが標準的です。
  1. ISO 8601 文字列: GetCurrentDateTime() で取得。クエリでの比較(文字列比較として動作)に適している。
  2. Unix タイムスタンプ: GetCurrentTimestamp() で取得。数値計算や効率的なインデックスに適している。
まとめ
  • 問い: UTC 日時を ISO 8601 文字列で取得したい。
  • 正解: GetCurrentDateTime() を使用する。

コメント

コメント

コメントする

目次