列表内有多个时间: [‘20220202’, ‘20220203’, ‘20220204’], 通过pymysql 查询数据库计算他们的日距平
时间: 2023-09-25 15:14:57 浏览: 57
假设你要查询的表名为 `my_table`,日期字段名为 `date_field`,以下是一种实现方式:
```python
import pymysql
from datetime import datetime, date
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='password', database='my_db', charset='utf8mb4')
cursor = conn.cursor()
# 查询数据
dates = ['20220202', '20220203', '20220204']
query = f"SELECT AVG(DATEDIFF(date_field, '{date.today()}')) FROM my_table WHERE date_field IN ({','.join(dates)})"
cursor.execute(query)
result = cursor.fetchone()[0]
print(result)
```
这里使用了 `AVG` 函数计算平均日距平。其中 `DATEDIFF(date_field, '{date.today()}')` 表示计算 `date_field` 和今天的日期之间相差的天数。
相关问题
列表内有多个时间: [‘20220202’, ‘20220203’, ‘20220204’], 通过pymysql 查询数据库计算每个时间点的日距平
假设你的数据库表名为 `my_table`,日期字段名为 `date_field`,那么你可以使用以下代码来计算每个时间点的日距平:
```python
import pymysql
import numpy as np
# 建立数据库连接
conn = pymysql.connect(host='localhost', user='your_username', password='your_password', database='your_database')
# 查询数据
sql = "SELECT date_field FROM my_table"
cursor = conn.cursor()
cursor.execute(sql)
results = cursor.fetchall()
# 计算平均值
total_days = 0
for row in results:
total_days += (row[0] - datetime.datetime(1970, 1, 1)).days
mean_days = total_days / len(results)
# 计算每个时间点的日距平
days_from_mean = []
for row in results:
days_from_mean.append((row[0] - datetime.datetime(1970, 1, 1)).days - mean_days)
# 输出结果
print(days_from_mean)
```
其中,`datetime.datetime(1970, 1, 1)` 表示 Unix 时间戳的起点。如果你的日期字段类型不是 `datetime`,而是字符串或其他类型,你需要先将其转换为 `datetime` 类型。
阅读全文