type - python boto3 dynamodb datetime




Que tipo de dados deve ser usado para registro de data e hora no DynamoDB? (2)

O tipo de dados String deve ser usado para Data ou Data e Hora.

Você pode usar o tipo de dados String para representar uma data ou um carimbo de data / hora. Uma maneira de fazer isso é usando as seqüências de caracteres ISO 8601, conforme mostrado nestes exemplos:

15/02/2016

2015-12-21T17: 42: 34Z

20150311T122706Z

Tipo de dados do DynamoDB para Data ou Data e Hora

Sim, as consultas de intervalo são suportadas quando a data é armazenada como String. O BETWEEN pode ser usado na FilterExpresssion. Obtive os itens no resultado usando as expressões de filtro abaixo.

FilterExpression sem tempo: -

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

FilterExpression com o tempo: -

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

Valores do banco de dados: -

Formato 1 - com fuso horário:

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

Formato 2 - sem fuso horário: -

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

Eu sou novo no DynamoDB. Desejo criar uma tabela que use DeviceID como chave de hash, Timestamp como minha chave de intervalo e alguns dados.

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

No SQL, podemos usar o tipo de data e hora para o carimbo de data e hora, mas no DynamoDB não há nenhum.

  1. Que tipo de dados devo usar? Corda? Número?

  2. Para o tipo de dados escolhido, em que tipo de formato de carimbo de data e hora devo escrever? Formato ISO (por exemplo: 2016-11-11T17: 21: 07.5272333Z) ou época (por exemplo: 1478943038816)?

  3. Preciso pesquisar na tabela em um intervalo de tempo, por exemplo: 1/1/2015 10:00:00 até 31/12/2016 23:00


O tipo de dados depende dos seus requisitos.

Você pode usar String usando o formato ISO ou Number usando o formato de época.

A vantagem do formato ISO (String) é a legibilidade humana, no entanto, o DynamoDB não suporta TTL (Time To Live) para este formato. Todos os filtros funcionam como 'entre' e 'intervalo', conforme explicado pela noção de perguntas.

O Time To Live (TTL) do DynamoDB permite definir quando os itens de uma tabela expiram para que possam ser excluídos automaticamente do banco de dados.

A vantagem de usar o formato de época (Número) é que você pode usar o recurso TTL e todos os filtros.

TLDR;

Formato de época (tipo de número) - pode usar o Time To Live
Formato ISO (tipo String) - Não é possível usar o Time To Live, mas é mais legível para humanos







sqldatatypes