DynamoDB 中的时间戳应该使用什么数据类型? [英] What data type should be use for timestamp in DynamoDB?

查看:34
本文介绍了DynamoDB 中的时间戳应该使用什么数据类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 DynamoDB 的新手.我想创建一个表,使用 DeviceID 作为哈希键,时间戳作为我的范围键和一些数据.

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

在 SQL 中,我们可以使用日期时间类型作为时间戳,但在 DynamoDB 中没有.

  1. 我应该使用什么数据类型?细绳?号码?

  2. 对于选择的数据类型,我应该写什么样的时间戳格式?ISO 格式(例如:2016-11-11T17:21:07.5272333Z)或纪元时间(例如:1478943038816)?

  3. 我需要在一个时间范围内搜索表格,例如:1/1/2015 10:00:00am 到 31/12/2016 11:00:00pm

解决方案

String 数据类型应该用于 Date 或 Timestamp.

<块引用>

您可以使用 String 数据类型来表示日期或时间戳.一种方法是使用 ISO 8601 字符串,如下所示示例:

2016-02-15

<块引用>

2015-12-21T17:42:34Z

<块引用>

20150311T122706Z

DynamoDB 日期或的数据类型时间戳

是的,当日期存储为字符串时,支持范围查询.BETWEEN 可用于 FilterExpresssion.我使用以下过滤器表达式获得了结果中的项目.

FilterExpression 没有时间:-

FilterExpression : 'createdate between :val1 and :val2',表达式属性值:{':hkey' : year_val,':rkey' : 标题,:val1":2010-01-01",:val2":2010-12-31"}

FilterExpression with time:-

FilterExpression : 'createdate between :val1 and :val2',表达式属性值:{':hkey' : year_val,':rkey' : 标题,: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":"什么也没发生."}}}}}

格式 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":"什么也没发生."}}}}}

I am new to DynamoDB. I wish to create a table which using DeviceID as the hash key, Timestamp as my range key and some data.

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

In SQL, we can use datetime type for Timestamp, but in DynamoDB there is none.

  1. What data type should I use? String? Number?

  2. For the chosen data type, what kind of timestamp format should I write in? ISO format (e.g: 2016-11-11T17:21:07.5272333Z) or epoch time (e.g: 1478943038816)?

  3. I need to search through the table through a range of time, e.g: 1/1/2015 10:00:00am until 31/12/2016 11:00:00pm

解决方案

The String data type should be used for Date or Timestamp.

You can use the String data type to represent a date or a timestamp. One way to do this is by using ISO 8601 strings, as shown in these examples:

2016-02-15

2015-12-21T17:42:34Z

20150311T122706Z

DynamoDB Data type for Date or Timestamp

Yes, the Range queries are supported when the date is stored as String. The BETWEEN can be used on FilterExpresssion. I have got the items in the result using the below filter expressions.

FilterExpression without time:-

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

FilterExpression with time:-

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

Database Values:-

Format 1 - with timezone:

{"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."}}}}}

Format 2 - without timezone:-

{"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."}}}}}

这篇关于DynamoDB 中的时间戳应该使用什么数据类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆