DynamoDB 时间戳属性以字符串格式存储,应检索指定时间戳范围内的记录
DynamoDB timestamp attribute stored in string format, should retrieve records within a specified timestamp range
Dynamodb 具有时间戳属性,它以字符串格式存储日期和时间“Thu Jan 14 19:55:27 UTC 2021”。
现在,我想检索“Thu Jan 11 20:55:27 UTC 2021”和“Thu Jan 13 22:15:27 UTC 2021”之间的记录。
下面是代码:
from datetime import datetime
from boto3.dynamodb.conditions import Attr
def lambda_handler(event, context):
startdatetime=event["startdate"]
enddatetime=event["enddate"]
start=datetime.strptime(startdatetime,"%a %b %d %H:%M:%S UTC %Y")
end=datetime.strptime(enddatetime,"%a %b %d %H:%M:%S UTC %Y")
fe=Attr('timestamp').between(start,end)
response = table.scan(
FilterExpression=fe
)
这没有给出正确的记录集,因为比较是在字符串和日期时间之间进行的。
不会将 Attr() 转换为日期时间。
下面是我试过的代码片段:
fe=datetime.strptime(str(Attr('timestamp')),"%a %b %d %H:%M:%S UTC %Y").between(start, end)
这也没有帮助。
对此有什么建议吗?
DynamoDB 对中间部分进行 字符串比较 它没有日期时间的实际概念,这就是为什么您必须小心将日期时间信息存储在table.
对于 between
查询,基本上推荐两种存储数据的方法:
- UTC 时间的 ISO8601,所以像这样:
2021-02-12T18:50:00.000+00:00
- Epoch时间,从
1970-01-01T00:00:00.000+00:00
开始的秒数
你在查询的时候,还需要根据这些规则,对你要查询的时间戳进行归一化处理,否则是不行的。
最重要的是,您想要查询它的方式不起作用,因为当基础数据结构是字符串时,该格式不适合在查询之间进行。
Dynamodb 具有时间戳属性,它以字符串格式存储日期和时间“Thu Jan 14 19:55:27 UTC 2021”。 现在,我想检索“Thu Jan 11 20:55:27 UTC 2021”和“Thu Jan 13 22:15:27 UTC 2021”之间的记录。 下面是代码:
from datetime import datetime
from boto3.dynamodb.conditions import Attr
def lambda_handler(event, context):
startdatetime=event["startdate"]
enddatetime=event["enddate"]
start=datetime.strptime(startdatetime,"%a %b %d %H:%M:%S UTC %Y")
end=datetime.strptime(enddatetime,"%a %b %d %H:%M:%S UTC %Y")
fe=Attr('timestamp').between(start,end)
response = table.scan(
FilterExpression=fe
)
这没有给出正确的记录集,因为比较是在字符串和日期时间之间进行的。 不会将 Attr() 转换为日期时间。 下面是我试过的代码片段:
fe=datetime.strptime(str(Attr('timestamp')),"%a %b %d %H:%M:%S UTC %Y").between(start, end)
这也没有帮助。
对此有什么建议吗?
DynamoDB 对中间部分进行 字符串比较 它没有日期时间的实际概念,这就是为什么您必须小心将日期时间信息存储在table.
对于 between
查询,基本上推荐两种存储数据的方法:
- UTC 时间的 ISO8601,所以像这样:
2021-02-12T18:50:00.000+00:00
- Epoch时间,从
1970-01-01T00:00:00.000+00:00
开始的秒数
你在查询的时候,还需要根据这些规则,对你要查询的时间戳进行归一化处理,否则是不行的。
最重要的是,您想要查询它的方式不起作用,因为当基础数据结构是字符串时,该格式不适合在查询之间进行。