BadValueError: Unsupported type for property <type 'datetime.date'>
BadValueError: Unsupported type for property <type 'datetime.date'>
我正在查询具有日期值的字符串 属性 上带有过滤器的数据存储类型。我试图访问的 Kind 属性 actual_reported_date 没有明确定义,而是一个 String 类型的动态属性。将 属性 值存储为字符串类型而不是日期类型是错误的。现在有没有一种方法可以用字符串格式的日期比较来过滤数据集?目标是过滤 actual_reported_date 属性 值大于输入 ( from_date_formatted )
的记录
BadValueError: Unsupported type for property <type 'datetime.date'>
抛出异常的代码
from_date_formatted = datetime.datetime.strptime(from_date, '%Y-%m-
%d').date()
query = EarningsSurprise.query(EarningsSurprise.ticker == ticker)
query =
query.filter(ndb.GenericProperty('actual_reported_date') >=
from_date_formatted)
result = list(query.fetch()) # ( Exception is thrown at this point)
实体
class EarningsSurprise(ndb.Expando):
stock_code = ndb.StringProperty()
ticker = ndb.StringProperty()
original_data_source = ndb.StringProperty()
actual_data_provider = ndb.StringProperty()
created = ndb.DateTimeProperty(auto_now_add=True)
updated = ndb.DateTimeProperty(auto_now=True)
@classmethod
def create(cls, **kv):
return EarningsSurprise(**kv)
您不需要在 strptime
上放置 date()
。它已经这样做了:
from_date_formatted = datetime.datetime.strptime(from_date, '%Y-%m-%d')
接下来,actual_reported_date
定义在哪里?如果你有一个字符串格式的日期,你可以很容易地按 YYYYMMDDHHMMSS 排序......所以,你可以通过以下方式测试不平等(作为字符串!):
from_date >= actual_reported_date # e.g. ('2018-05-22' >= '2017-11-22')
我正在查询具有日期值的字符串 属性 上带有过滤器的数据存储类型。我试图访问的 Kind 属性 actual_reported_date 没有明确定义,而是一个 String 类型的动态属性。将 属性 值存储为字符串类型而不是日期类型是错误的。现在有没有一种方法可以用字符串格式的日期比较来过滤数据集?目标是过滤 actual_reported_date 属性 值大于输入 ( from_date_formatted )
的记录BadValueError: Unsupported type for property <type 'datetime.date'>
抛出异常的代码
from_date_formatted = datetime.datetime.strptime(from_date, '%Y-%m-
%d').date()
query = EarningsSurprise.query(EarningsSurprise.ticker == ticker)
query =
query.filter(ndb.GenericProperty('actual_reported_date') >=
from_date_formatted)
result = list(query.fetch()) # ( Exception is thrown at this point)
实体
class EarningsSurprise(ndb.Expando):
stock_code = ndb.StringProperty()
ticker = ndb.StringProperty()
original_data_source = ndb.StringProperty()
actual_data_provider = ndb.StringProperty()
created = ndb.DateTimeProperty(auto_now_add=True)
updated = ndb.DateTimeProperty(auto_now=True)
@classmethod
def create(cls, **kv):
return EarningsSurprise(**kv)
您不需要在 strptime
上放置 date()
。它已经这样做了:
from_date_formatted = datetime.datetime.strptime(from_date, '%Y-%m-%d')
接下来,actual_reported_date
定义在哪里?如果你有一个字符串格式的日期,你可以很容易地按 YYYYMMDDHHMMSS 排序......所以,你可以通过以下方式测试不平等(作为字符串!):
from_date >= actual_reported_date # e.g. ('2018-05-22' >= '2017-11-22')