DynamoDB のタイムスタンプにはどのデータ型を使用すればよいですか? 質問する

DynamoDB のタイムスタンプにはどのデータ型を使用すればよいですか? 質問する

私は DynamoDB を初めて使用します。ハッシュ キーとして DeviceID、範囲キーとして Timestamp、およびいくつかのデータを使用するテーブルを作成したいと考えています。

{ DeviceID: 123, Timestamp: "2016-11-11T17:21:07.5272333Z", X: 12, Y: 35 }

SQL では、タイムスタンプに datetime 型を使用できますが、DynamoDB では使用できません。

  1. どのデータ型を使用すればよいですか? 文字列ですか? 数値ですか?
    ここに画像の説明を入力してください

  2. 選択したデータ タイプでは、どのようなタイムスタンプ形式で書き込む必要がありますか? ISO 形式 (例: 2016-11-11T17:21:07.5272333Z) またはエポック時間 (例: 1478943038816)?

  3. テーブルを時間範囲で検索する必要があります。例: 2015 年 1 月 1 日午前 10:00:00 から 2016 年 12 月 31 日午後 11:00:00 まで

ベストアンサー1

文字列データ型日付またはタイムスタンプに使用する必要があります。

文字列データ型を使用して日付またはタイムスタンプを表すことができます。これを行う 1 つの方法は、次の例に示すように、ISO 8601 文字列を使用することです。

2016-02-15

2015-12-21T17:42:34Z

20150311T122706Z

日付またはタイムスタンプの DynamoDB データ型

はい、日付が文字列として保存されている場合、範囲クエリはサポートされます。FilterExpressions で使用できます。以下のフィルター式を使用して結果の項目を取得しました。

時間のない FilterExpression:-

FilterExpression : 'createdate between :val1 and :val2',
ExpressionAttributeValues : {
        ':hkey' : year_val,
        ':rkey' : title,
        ":val1" : "2010-01-01",
        ":val2" : "2010-12-31"
    }

時間付きの FilterExpression:-

FilterExpression : 'createdate between :val1 and :val2',
    ExpressionAttributeValues : {
        ':hkey' : year_val,
        ':rkey' : title,
        ":val1" : "2010-01-01T00:00:00",
        ":val2" : "2010-12-31T00:00:00"
    }

データベースの値:-

フォーマット 1 - タイムゾーン付き:

{"Item":{"createdate":{"S":"2010-12-21T17:42:34+00:00"},"title":{"S":"The Big New Movie 2010"},"yearkey":{"N":"2010"},"info":{"M":{"rating":{"N":"0"},"plot":{"S":"Nothing happens at all."}}}}}

フォーマット 2 - タイムゾーンなし:-

{"Item":{"createdate":{"S":"2010-12-21T17:42:34Z"},"title":{"S":"The Big New Movie 2010"},"yearkey":{"N":"2010"},"info":{"M":{"rating":{"N":"0"},"plot":{"S":"Nothing happens at all."}}}}}

おすすめ記事