19

私はDynamoDBを初めて使用しています。私はハッシュキーとしてDeviceID、タイムレンジを私の範囲キーといくつかのデータとして使用するテーブルを作成したいと思います。DynamoDBのタイムスタンプに使用するデータタイプは何ですか?

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

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

  1. どのデータ型を使用しますか?文字列?数?
    enter image description here

  2. 選択したデータ型について、どのようなタイムスタンプ書式を書き込む必要がありますか? ISOフォーマット(例:2016-11-11T17:21:07.5272333Z)またはエポックタイム(例:1478943038816)?

  3. 私は例えば、時間の範囲で表を検索する必要があります:2015年1月1日10時00分00秒午前31/12/2016 11時00分00秒午後

+0

http://stackoverflow.com/questions/27894393/is-it-possible-to-save-datetime-to-dynamodb –

+2

エポックタイム/フォーマットで数字を使用します。基本的にcustomer_id –

+0

のString型とNumber型のデータ型を使用して、範囲検索にも使用します。ISO8601フォーマットを格納するときは文字列、エポック時間を格納するときはNumberです。さらに詳しい情報はこちら:https://www.abhayachauhan.com/2017/12/how-to-store-dates-or-timestamps-in-dynamodb/ –

答えて

21

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

文字列データ型を使用して、日付またはタイムスタンプを表すことができます。

2016年2月15日

2015-12-21T17:42:34Z

20150311T122706Z

をこれら の例のようにこれを行うための 一つの方法は、ISO 8601の文字列を使用することです

DynamoDB Data type for Date or Timestamp

はい、Rangeクエリは、日付がStringとして格納されている場合にサポートされます。 BETWEENは、FilterExpresssionで使用できます。私は以下のフィルタ式を使って結果に項目を持っています。時間のない

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."}}}}} 
+0

しかし、日付範囲の検索は文字列値として保存されていますか? –

+0

@notionquest ya、Stringで日付と時間範囲の検索を行うことはできますか? – Dennis

+0

@マークB - 日付が文字列として保存されると、範囲クエリがサポートされます。私は例を使って答えを更新しました。 Between演算子を使用してデータをフィルタリングできます。 – notionquest

関連する問題