2016-11-21 20 views
1

次のようにSQLデータベースからレコードを返すと気付きました:the_records = records.objects.filter(datetime__contains="2015-01-15")、タイムゾーンが何とか関数呼び出しに影響するため、間違ったレコードが返されます。タイムゾーンを無効にすると、正しいレコードが返されます。誰でもこの問題を解決するために何をすべきかを援助してもらえますか(私はまだタイムゾーンを使用する必要があります)。SQL where節とDjangoタイムゾーン

よろしく、マーク

答えて

1

私はdatetimeはDjangoのDateTimeフィールドであることを仮定している、とあなたは無視して、日付「2015年1月15日」に一致する値を持つ結果を取得しようとしています実際の時間。あなたはタイムゾーンの特定の日付を使用してDBを照会する必要がある場合、あなたはそれを認識しているDateTimeオブジェクトを作成することができますRecords.objects.filter(datetime__date=datetime.date(2015, 1, 15))

+0

ありがとう、これは私の問題を解決しました。 – beliskna

0

タイムゾーンだ:その場合は

は、おそらくのように、 dateクエリを実行したいです。

例:

# Get your timezone 
from django.utils import timezone 
my_timezone = timezone.get_current_timezone() 


# Get create your timezone aware datetime object 
from datetime import datetime 
query_date = datetime(2015,01,15).replace(tzinfo=my_timezone) 


# now you can run your query with a timezone specific datetime object 
the_records = records.objects.filter(datetime=query_date) 

これはあなたの問題を解決し、あなたが必要正確な結果を取得する必要があります。 ご不明な点がありましたら、お知らせください。

linkには、もっと学ぶことに興味がある場合は、djangoタイムゾーンに関する詳細があります。

+0

ありがとうパトリックですが、このコードでは日付がわかりません。日付部分のみを抽出してレコードをフィルタリングするときには、間違ったレコードが返されます。 – beliskna