1292,截断了错误的时间值:(MySQL和Python)

2024-05-19 06:22:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我们已经开发了一个小程序,在这里我们想采取一个值,并搜索我们的MySQL数据库的其他巧合,其中一个值是相同的,在同一时间。为此,我们比较时间,并使用以下SQL查询:

value = pd.read_sql('SELECT third_temp_lpn FROM Raw_Validated WHERE TIME(time_end) = TIME("%s") AND third_temp_lpn = "%s"' % (x + datetime.timedelta(minutes=20), list_lpn_temp[-1]), conn).astype(float).values

在这里,我们使用TIME(TIME\u end),在MySQL数据库上使用它时,效果非常好。查询应该将时间与datetime隔离,我们将其设置为time(%s),这是python中的datetime(请参阅完整代码)。你知道吗

在python中执行上述查询时,我们收到一个奇怪的错误,如下所示:

Warning: (1292, "Truncated incorrect time value: '2019-08-31'")
    cursor.execute(statement, parameters)

有人能帮忙吗?你知道吗

代码

import pandas as pd
import numpy as np
import pprint
import datetime
import math
from pandas.io import sql
from sqlalchemy import create_engine

list_lpn_temp = []
times = []
values = []

engine = create_engine("mysql://root:DTULab@123@localhost/Afgangsprojekt")
conn = engine.connect()

firstTime = pd.read_sql('SELECT MIN(timestamp) FROM Raw_Data', conn).astype(str).values.tolist()
firstTime = (pd.to_datetime(firstTime[0])-datetime.timedelta(minutes=10)).round('20T')

lastTime = pd.read_sql('SELECT MAX(timestamp) FROM Raw_Data', conn).astype(str).values.tolist()
lastTime = (pd.to_datetime(lastTime[0])-datetime.timedelta(minutes=10)).round('20T')

print (firstTime[0])
print (lastTime[0])

index = pd.date_range(start=firstTime.min(), end=lastTime.max(), freq='20T')

for x in index:

    a_temp = pd.read_sql('SELECT temperature FROM Raw_Data WHERE topic = "lpn1" AND timestamp > "%s" AND timestamp < "%s" ORDER BY timestamp DESC LIMIT 1' % (x, x+datetime.timedelta(minutes=20)), conn).astype(float).values
    a_temp = a_temp.astype(int)

    if a_temp:
        list_lpn_temp.extend(a_temp[0])
    else:
        print (x, " | ", x + datetime.timedelta(minutes=20))
        value = pd.read_sql('SELECT third_temp_lpn FROM Raw_Validated WHERE TIME(time_end) = TIME("%s") AND third_temp_lpn = "%s"' % (x + datetime.timedelta(minutes=20), list_lpn_temp[-1]), conn).astype(float).values
        time = pd.read_sql('SELECT time_end FROM Raw_Validated WHERE TIME(time_end) = TIME("%s") AND third_temp_lpn = "%s"' % (x + datetime.timedelta(minutes=20), list_lpn_temp[-1]), conn).astype(str).values
        values.append(value)
        times.append(time)
        print (values[0])
        print (times[0])
        list_lpn_temp.append(float('nan'))

print (list_lpn_temp)

Tags: importreadsqldatetimetimeconntemplist

热门问题