2009-09-14 6 views
2

타임 스탬프를 기반으로 뭔가를 선택할 수 없습니다. 그 행동은 다소 이상하고, <과 = 기호는 내가 기대하는 것을 의미하지 않는 것처럼 보입니다. 내가 appengine은 타임 스탬프를 기반으로 선택합니다.

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

같은 GQL 쿼리를 작성하는 경우

 
""" 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) 

그것은 나에게 아무것도 등을 제공하지 않습니다 (데이터 저장소에 정확하게 시간 스탬프가있는 메시지가있다). 내가

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

을하려고하면

그것은 단순히 나에게 그들 모두를 제공합니다. > 기호를 사용하면 간단히 나를 다시는 알려주지 않습니다.

여기에 무슨 일이 일어나고 어떻게 타임 스탬프를 기반으로 선택합니까?

답변

5

Do 문자열을 사용하여 datetimes를 "대기"하십시오! 그냥 작동하지 않습니다 ...

the docs을 참조하십시오. DateTimePropertydatetime.datetime 값에 해당합니다. import datetime, 사랑하는 문자열을 datetime.datetime 인스턴스 (예 : strptime 메서드 호출)로 변환하고, 비교를 위해이 인스턴스를 사용하십시오. -

+0

개체를 GQL에 어떻게 넣을까요? 쿼리 문자열을 다시 문자열로 변환하지 않고? – bobobobo

+0

다음과 같이 datetime을 참조 할 수 있습니다. SELECT * FROM table WHERE datemodel = DATETIME ('YYYY-MM-DD HH : MM : SS') 참조 : code.google.com/appengine/docs/... –

+1

"SELECT * FROM table WHERE datemodel = : 1"을 수행하고 datetime을 gqlquery의 인수로 전달합니다. gqlquery는 런타임시 선택된 datetime을 사용하는 경우 반드시 수행해야하는 작업입니다. –

관련 문제