如何将DateProperty转换/迁移到DateTimeProperty

时间:2014-05-15 05:23:32

标签: google-app-engine google-cloud-datastore

我知道DateProperty和DateTimeProperty之间的区别

difference between DateProperty and DateTimeProperty

我也很欣赏如何使用任务来维护我的架构(特别是缺少属性值)

https://stackoverflow.com/a/2019882/1175496

但我有一个date_filed=db.DateProperty的模型 我发现我几乎总是想要db.DateTimeProperty 的(时间)准确度如何将此字段从DateTime转换为DateTimeProperty

我的问题是:

  • 怎么做
    • 即只需从date_filed=db.DateProperty更改为date_filed=db.DateTimeProperty
  • 它会以某种方式自动更新现有实体吗?
    • ie或者我必须创建一个更改它们的任务吗?
  • 如果实体具有相同属性的不同类型,那么对该属性的过滤和排序如何工作?
    • 即DateProperty为datetime.datetime值
  

当查询涉及具有混合类型值的属性时,   数据存储区使用基于内部的确定性排序   陈述:......

     
      
  1. 定点数      
        
    • 整数
    •   
    • 日期和时间
    •   
  2.   
  • 有什么结果/陷阱
    • 即验证错误

1 个答案:

答案 0 :(得分:3)

我在问题中预见了最简单的选项。 db.Model设计师也预料到它(似乎很容易做到!)

  • 怎么做
    • 是:只需从date_filed = db.DateProperty更改为date_filed = db.DateTimeProperty
  • 它会以某种方式自动更新现有实体吗?
    • 种类:具体的DateProperty.get_value_for_datastore方法实际上将任何datetime.date对象转换为datetime.datetime对象,然后将其作为“原始值”存储在数据库中。
    • 现有实体并非真正自动更新,他们只是开始使用DateTimeProperty.make_value_from_datastore(与get_value_for_datastore相反),后退为Property.make_value_from_datastore,返回原始值; datetime.datetime对象;不要将其“截断”为datetime.date对象
    • 无需:...创建更改任务
  • 如果实体具有相同属性的不同类型,那么对该属性的过滤和排序如何工作?
    • 在这种情况下无关;它们具有相同的基础类型。
    • 虽然“基于内部表征的确定性排序”声明(在同一个项目符号中列出日期和日期时间)表明它们具有共同的内部表示,因此它们可用于排序/过滤等。
  • 有什么结果/陷阱
    • 在这种情况下没遇到;也许某人有其他数据类型迁移/转换的故事?