Cómo usar la marca de tiempo en el procedimiento almacenado de MySQL
Frecuentes
Visto 2,023 equipos
1
Soy nuevo en stackoverflow. Además, por favor, perdóname por mi inglés.
Tengo una pregunta sobre el uso de la marca de tiempo en el proceso almacenado de MySQL. Estoy usando el módulo MySQL 5 y MySQLdb Python (Python versión 2.6). Aquí hay un código para crear mi procedimiento almacenado:
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;")
Cuando intento crear este proceso, todo está bien. Pero, cuando llamo a este proceso, aparece un error. Aquí hay una llamada de este procedimiento:
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 (y endDate) obtengo esto:
time = datetime.datetime(2012, 07, 25, 8, 00, 00)
startDate = str (time)
Aquí está el error:
..._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)
¿Dónde está mi error? Si es posible, proporcione un ejemplo del uso de la "marca de tiempo" en el proceso almacenado de MySQL.
Gracias de antemano.
1 Respuestas
0
Usar concat
está generando una cadena de consulta que contiene una representación textual de DateTime que debe incluirse en '
. Esto no se está haciendo.
Respondido 29 Jul 12, 13:07
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas mysql mysql-python or haz tu propia pregunta.
También ten cuidado con inyección SQL en su procedimiento almacenado. - Vatév