Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

qual é a maneira correta de converter entre mysql datetime e python timestamp?


Fico feliz em atualizar isso se não estou entendendo corretamente, mas aqui estão alguns exemplos que podem ajudar. Observe que isso usa o datetime módulo em vez de time .
>>> import datetime

Aqui configuramos um timestamp de exemplo ts e um formato f :
>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'

Semelhante ao que você fez acima, usamos o strptime função (de datetime.datetime ) para converter nossa string em um datetime objeto com base no parâmetro de formatação:
>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)

Agora ao contrário - aqui usamos datetime.datetime.now() para obter a hora atual como datetime objeto:
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)

No datetime caso, o strftime método é realmente chamado no datetime próprio objeto, com o parâmetro de formatação como argumento:
>>> now.strftime(f)   
'2013-01-12 00:46:54'

Na sua situação, o motivo pelo qual você estava recebendo um erro é porque time.time() retorna um float:
>>> time.time()
1357980846.290231

Mas time.strftime precisa de um time tupla, semelhante ao que você tinha acima. Sem entrar na espiral enlouquecedora que é o tempo, uma função como time.localtime() retornará o time acima mencionado tupla e retornará como você 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'