sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la forma correcta de convertir entre mysql datetime y python timestamp?

Feliz de actualizar esto si no lo entiendo correctamente, pero aquí hay algunos ejemplos que pueden ayudar. Tenga en cuenta que esto usa el datetime módulo en lugar de time .

>>> import datetime

Aquí configuramos una marca de tiempo de ejemplo ts y un formato f :

>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'

Similar a lo que hiciste anteriormente, usamos el strptime función (de datetime.datetime ) para convertir nuestra cadena en un datetime objeto basado en el parámetro de formato:

>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)

Ahora al revés:aquí usamos datetime.datetime.now() para obtener la hora actual como datetime objeto:

>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)

En el datetime caso, el strftime el método en realidad se llama en el datetime objeto en sí, con el parámetro de formato como argumento:

>>> now.strftime(f)   
'2013-01-12 00:46:54'

En su situación, la razón por la que estaba recibiendo un error es porque time.time() devuelve un flotante:

>>> time.time()
1357980846.290231

Pero time.strftime necesita un time tupla, similar a lo que tenía arriba. Sin entrar en la espiral enloquecedora que es el tiempo, una función como time.localtime() devolverá el time antes mencionado tupla y regresará como espera:

>>> now = time.localtime()
>>> now
time.struct_time(tm_year=2013, tm_mon=1, tm_mday=12, tm_hour=0, tm_min=55, tm_sec=55, tm_wday=5, tm_yday=12, tm_isdst=0)
>>> f = '%Y-%m-%d %H:%M:%S'
>>> time.strftime(f, now)
'2013-01-12 00:55:55'