我是stackoverflow的新手。 另外,请原谅我的英语。
我有一个关于在MySQL存储过程中使用时间戳的问题。 我正在使用MySQL 5和MySQLdb Python模块(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时,我收到错误。 以下是此程序的调用:
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存储过程中使用“timestamp”。
提前致谢。
答案 0 :(得分:0)
使用concat
生成一个查询字符串,其中包含DateTime的文本表示,需要将其括在'
中。这还没有完成。