google app engineでdatetime = db.DateTimeProperty(auto_now_add=True)と定義してあるプロパティがあります。データストアから今日POSTされたデータだけfilterしたいのですがうまく行きません。Dateを使ってDateTimeをQueryでフィルタするにはどうしたらいいのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/01/09 13:02:24
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:bonlife No.1

回答回数421ベストアンサー獲得回数75

ポイント100pt

datetime.datetime型ではマイクロ秒まで保持されるので、比較するには今日の00:00以上、明日の00:00未満とすれば良いと思います。

filterでやるのであれば、こんな感じだと思います。

queryは事前に設定している想定です。

時差は考慮していないので、UTCです。

import datetime

today_start = datetime.datetime.today().replace(hour=0,minute=0,second=0,microsecond=0)
tomorrow_start = today_start + datetime.timedelta(days=1)

query.filter('date >=', today_start).filter('date <', tomorrow_start)

同じことをGqlQueryを使ってSQLのように書いても良いと思います。

id:double_o_groove

あ~、そっか~。いけそうな感じがしますね。ありがとうございます。

ちなみに最後の行のdateはdatetimeですよね?宣言がdatetime = db.DateTimeProperty(auto_now_add=True)なので。

2009/01/07 11:33:45

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません