'2012-09-10 00:00:00-05:00'
MySQLクエリに渡しています。この値は、Python用のpytzモジュールを使用して取得されます。
import pytz
class MyClass():
def __init____(self):
self.tz = pytz.timezone(settings.TIME_ZONE)
todaystart = self.tz.localize(datetime.now(self.tz).replace(hour=0, minute=0, second=0, microsecond=0, tzinfo=None), is_dst=None).astimezone(self.tz)
MySQLクエリは、次のtodaystart
ように置き換えられた後、これです。
SELECT * FROM mytable WHERE created > UNIX_TIMESTAMP(STR_TO_DATE('2012-09-10 00:00:00-05:00','%Y-%m-%d %k:%i:%s') - INTERVAL 1 DAY);
このクエリを直接実行すると、期待どおりにデータが返されます。このクエリをコードに入れると、次のエラーが発生します。Warning: Truncated incorrect datetime value: '2012-09-09 00:00:00-05:00'
私が使用しているコードは次のとおりです(Django内):
query = """SELECT * FROM mytable WHERE created > UNIX_TIMESTAMP(STR_TO_DATE('2012-09-10 00:00:00-05:00','%Y-%m-%d %k:%i:%s') - INTERVAL 1 DAY);"""
myCursor = connections[system_db].cursor()
results = myCursor.execute(query) # Dies on this statement
resultcount = results.fetchall()
str_to_dateのMySQLドキュメントにオフセットフォーマット文字列が表示されませんでした。データはサードパーティシステムに返されるため、そのオフセットを保持することをお勧めします。データを所定の位置に保持することで、その戻りと返された日付でクエリを実行するまでの間にロジックを実行する必要がありません。ただし、直接実行すると機能するため、オフセットとは関係ないと思います。
Warning
PythonがMySQLに対してクエリを実行すると、これが表示される原因となる誤った操作を行ったのですか?