Mysql
 sql >> Database >  >> RDS >> Mysql

qual è il modo corretto per convertire tra mysql datetime e python timestamp?

Felice di aggiornare questo se non ho capito correttamente, ma ecco alcuni esempi che possono aiutare. Nota che questo utilizza il datetime modulo invece di time .

>>> import datetime

Qui impostiamo un timestamp di esempio ts e un formato f :

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

Simile a quello che hai fatto sopra, utilizziamo strptime funzione (da datetime.datetime ) per convertire la nostra stringa in un datetime oggetto in base al parametro di formattazione:

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

Ora al contrario:qui usiamo datetime.datetime.now() per ottenere l'ora corrente come datetime oggetto:

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

Nel datetime caso, il strftime il metodo viene effettivamente chiamato su datetime oggetto stesso, con il parametro di formattazione come argomento:

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

Nella tua situazione, il motivo per cui stavi ricevendo un errore è perché time.time() restituisce un float:

>>> time.time()
1357980846.290231

Ma time.strftime ha bisogno di un time tupla, simile a quello che avevi sopra. Senza entrare nella spirale esasperante che è il tempo, una funzione come time.localtime() restituirà il suddetto time tupla e tornerà come previsto:

>>> 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'