私は DynamoDB を初めて使用します。ハッシュ キーとして DeviceID、範囲キーとして Timestamp、およびいくつかのデータを使用するテーブルを作成したいと考えています。
{ DeviceID: 123, Timestamp: "2016-11-11T17:21:07.5272333Z", X: 12, Y: 35 }
SQL では、タイムスタンプに datetime 型を使用できますが、DynamoDB では使用できません。
ベストアンサー1
の文字列データ型日付またはタイムスタンプに使用する必要があります。
文字列データ型を使用して日付またはタイムスタンプを表すことができます。これを行う 1 つの方法は、次の例に示すように、ISO 8601 文字列を使用することです。
2016-02-15
2015-12-21T17:42:34Z
20150311T122706Z
はい、日付が文字列として保存されている場合、範囲クエリはサポートされます。間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."}}}}}