2017-11-17 20 views
2

私はdynamtbテーブルを持っています。このダイナモテーブルには、keytype "range"の属性として日付フィールドを持つGlobalSecondaryIndexがあります。値はISO形式 "YYYY-MM-DD"で保存されます。 特定の日付より大きい日付のノードのみのレコードにアクセスしたいとします。 私のクエリのためのパラメータで動作するようです:amazon-dynamodbと日付でフィルタリング

KeyConditionExpression: 'myDate >= :myDate', 
ExpressionAttributeValues: { 
    ':myDate': '2017-11-17' 
} 

私はかなり理解していないが。日付は技術的には文字列です。文字列の比較を信頼することは信頼できるのですか、それとも別の方法で行うべきですか?

答えて

0

はい、YYYY-MM-DDの形式で保存されている限り、これを中継することができます。

DynamoDBにはDateのデータ型がありません。日付は、StringまたはNumberのいずれかとして格納できます。文字列として

Date S (string type). The Date values are stored as ISO-8601 formatted strings. 

保存日時: -

あなたは、日付やタイムスタンプを表現するために、文字列データ型を使用することができます。これら の例のようにこれを行うための 一つの方法は、ISO 8601の文字列を使用することです:

  • 2016年2月15日

  • 2015-12-21T17:42:34Z

  • 日付aを保存
  • 20150311T122706Z

■番号: -

日付またはタイムスタンプを表すには、数値データ型を使用できます。 これを行う方法の1つは、1970年1月1日の 00:00:00 UTCからのエポック時間を使用することです。たとえば、エポック時間1437136300 は、2015年7月17日12:31:40 UTCを表します。

Data types

+0

これはわかりました。しかし、このmyDate> =:私の例のmyDateは単純な文字列の比較に基づいています。 2016-02-15と2016-02-14の2つの日付を持つと、最後の文字「5」が「4」よりも大きいため、最初の文字が大きくなります。 –

+0

はい正しい2016-02-15が2016-02-14より大きい。 – notionquest

関連する問題