数据库中的时间数据通常以协调世界时(UTC)存储,这是一种标准时间,不受时区影响。然而,当这些数据被检索并展示给用户时,它们通常会被转换为用户的本地时区。这就是为什么同一查询在不同时区可能会返回不同的结果。
问题:对同一数据库的相同查询在不同时区返回不同的结果。
原因:
import mysql.connector
from datetime import datetime, timezone
# 连接数据库,设置时区为UTC
db = mysql.connector.connect(
host="your_host",
user="your_user",
password="your_password",
database="your_database",
charset='utf8mb4',
collation='utf8mb4_unicode_ci',
connect_timeout=5,
pool_name="mypool",
pool_size=5,
time_zone='+00:00'
)
cursor = db.cursor()
# 查询示例
query = "SELECT * FROM your_table WHERE timestamp_column = %s"
timestamp = datetime.now(timezone.utc)
cursor.execute(query, (timestamp,))
result = cursor.fetchall()
for row in result:
print(row)
cursor.close()
db.close()
通过以上方法,可以确保在不同时区执行相同查询时返回一致的结果。
领取专属 10元无门槛券
手把手带您无忧上云