insertar - timedelta python 3
Python: ¿Cómo obtengo el tiempo de un objeto datetime.timedelta? (2)
Me parece que el tipo TIME en MySQL pretende representar los intervalos de tiempo como lo hace datetime.timedelta en Python. De los documentos a los que hace referencia:
Los valores de TIEMPO pueden variar de ''-838: 59: 59'' a ''838: 59: 59''. La parte de las horas puede ser tan grande porque el tipo de TIEMPO puede usarse no solo para representar una hora del día (que debe ser menor a 24 horas), sino también el tiempo transcurrido o un intervalo de tiempo entre dos eventos (que puede ser mucho mayor que 24 horas, o incluso negativas).
Una alternativa a la conversión de datetime.timedelta a datetime.time sería cambiar el tipo de columna a DATETIME y no usar los campos de fecha.
-Insertar:
tIn = datetime.datetime(
year=datetime.MINYEAR,
month=1,
day=1,
hour=10,
minute=52,
second=10
)
cursor.execute(''INSERT INTO TableName (TimeColumn) VALUES (%s)'', [tIn])
-Seleccionar:
cursor.execute(''SELECT TimeColumn FROM TableName'')
result = cursor.fetchone()
if result is not None:
tOut = result[0].time()
print ''Selected time: {0}:{1}:{2}''.format(tOut.hour, tOut.minute, tOut.second)
Se invoca a datetime.time () en un objeto datetime para obtener un objeto de hora.
Una tabla de base de datos mysql tiene una columna cuyo tipo de datos es time ( http://dev.mysql.com/doc/refman/5.0/en/time.html ). Cuando se accede a los datos de la tabla, Python devuelve el valor de esta columna como un objeto datetime.timedelta. ¿Cómo saco el tiempo fuera de esto? (No entendí realmente para qué es timedelta de los manuales de python).
Por ejemplo, la columna en la tabla contiene el valor "18:00:00" Python-MySQLdb devuelve esto como datetime.timedelta (0, 64800)
Por favor ignore lo que está abajo (devuelve un valor diferente) -
Agregado: independientemente del valor de tiempo en la tabla, Python-MySQLdb parece devolver solo datetime.timedelta (0, 64800).
Nota: yo uso Python 2.4
Es extraño que Python devuelva el valor como datetime.timedelta
. Probablemente debería devolver un datetime.time
. De todos modos, parece que está devolviendo el tiempo transcurrido desde la medianoche (asumiendo que la columna en la tabla es 6:00 PM). Para convertir a datetime.time
, puede hacer lo siguiente:
value = datetime.timedelta(0, 64800)
(datetime.datetime.min + value).time()
datetime.datetime.min
supuesto, datetime.datetime.min
y datetime.time()
están documentados como parte del módulo datetime si desea obtener más información.
Un datetime.timedelta
es, por cierto, una representación de la diferencia entre dos valores de datetime.datetime
. Entonces, si resta un datetime.datetime
de otro, obtendrá un datetime.timedelta
. Y si agrega un datetime.datetime
con un datetime.timedelta
, obtendrá un datetime.datetime
. Así es como funciona el código anterior.