1

私はstackoverflowの初心者です。また、私の英語を許してください。

MySQLストアドプロシージャでのタイムスタンプの使用について質問があります。MySQL5とMySQLdbPythonモジュール(Pythonバージョン2.6)を使用しています。ストアドプロシージャを作成するためのコードは次のとおりです。

def create_procedure_sum_shift ():
    global cursor

    cursor.execute("CREATE PROCEDURE `sum_shift`\
    (IN s_Time DATETIME, IN e_Time DATETIME)\
    BEGIN\
    SET @q = concat('SELECT * FROM trig_test WHERE `t_stamp`>=',\
    s_Time,' AND `t_stamp` <= ', e_Time);\
    PREPARE query FROM @q;\
    EXECUTE query;\
    deallocate prepare query;\
    END;")

このprocを作成しようとすると、すべて問題ありません。しかし、このprocを呼び出すと、エラーが発生します。この手順の呼び出しは次のとおりです。

def call_sum_shift(startDate, endDate):
    global cursor
    cursor.execute("call sum_shift(DATE('%s'),DATE('%s'));" % (startDate, endDate))
    rows = cursor.fetchall()
    discr = cursor.description
    return rows,discr

startDate(およびendDate)私はこれを取得します:

time = datetime.datetime(2012, 07, 25, 8, 00, 00)
startDate = str (time)

エラーは次のとおりです。

..._mysql_exceptions.ProgrammingError:(1064,"You have an error...for the right syntax to    use near '00:00:00 AND `t_stamp` <= 2012-07-25 00:00:00` at line 1)

私の間違いはどこにありますか?可能であれば、MySQLストアドプロシージャで「タイムスタンプ」を使用する例を挙げてください。

前もって感謝します。

4

1 に答える 1

0

concatで囲む必要がある DateTime のテキスト表現を含むクエリ文字列を生成しています'。これは行われていません。

于 2012-07-29T12:03:40.207 に答える