基于时间戳的App Engine选择

2 投票
1 回答
1524 浏览
提问于 2025-04-15 14:18

我好像无法根据时间戳来选择某些东西。这个行为有点奇怪,< 和 = 这些符号似乎并不是我想的那样。

""" A site message """
class Message( db.Model ) :
  # from/to/ a few other fields
  subject = db.StringProperty()
  body = db.Text()

  # this is the field i'm trying to use
  sent = db.DateTimeProperty( auto_now_add=True )

当我写 GQL 查询时,比如

select * from Message where sent = '2009-09-14 01:00:02.648000'

(在数据存储中确实有一个时间戳完全相同的消息)

结果却给我什么都没有

如果我尝试

select * from Message where sent < '2009-09-14 01:00:02.648000'

结果却给我所有的消息。当我尝试使用 > 符号时,结果又什么都没有。

这是怎么回事,我该如何根据时间戳来选择呢?

1 个回答

5

千万不要用字符串来代替日期时间!这样做根本行不通...

可以看看这个文档DateTimeProperty对应的是datetime.datetime这个值。你需要import datetime,把你喜欢的字符串转换成datetime.datetime实例(比如可以用strptime方法来转换),然后用这些实例来进行比较——当然,最后你会过得很开心!

撰写回答