我们正在开发一个托管在Appengine Flexible环境中的Web应用程序,我们使用数据存储作为后端。在我们的场景中,我们在同一天进行多次插入,当我们提取当天的数据时,我们需要提取当天的所有记录,这非常简单。除了DateAdded之外,我们的一个Devs还添加了一个格式化的日期YYYYMMDD,即Datetime.Now。 这是为了简化Reads。我们只做插页。对任何记录的更新都将是用于审计目的的新插入。如果添加冗余日期(YYYYMMDD)字段是正确的,以及这对数据存储区的成本是多少,则需要提出建议。这个字段是一个字符串,我个人认为这是好的。但想得到关于此的建议。谢谢!
答案 0 :(得分:0)
从技术上讲,您不需要其他属性来保存格式化日期,但它确实使您的查询看起来更简单。换句话说,您可以使用原始DateTime属性(存储实体创建时间戳)来查找给定日期或日期范围的所有实体。
对YYYYMMDD使用String属性需要一个简单的查询,如下所示:
SELECT * FROM MyKind WHERE MyProperty='20170209'
另一方面,如果你想使用原始的DateTime属性,你的查询将是这样的 -
SELECT * FROM MyKind WHERE MyProperty >= DATETIME('2017-02-09T00:00:00.000000Z') AND MyProperty < DATETIME('2017-02-10T00:00:00.000000Z')
两种方法都没问题。