Mysql
 sql >> Base de données >  >> RDS >> Mysql

quelle est la bonne façon de convertir entre mysql datetime et python timestamp?

Heureux de mettre à jour ceci si je ne comprends pas bien, mais voici quelques exemples qui peuvent aider. Notez que cela utilise le datetime module au lieu de time .

>>> import datetime

Ici, nous avons configuré un exemple d'horodatage ts et un format f :

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

Semblable à ce que vous avez fait ci-dessus, nous utilisons le strptime fonction (depuis datetime.datetime ) pour convertir notre chaîne en un datetime objet basé sur le paramètre de formatage :

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

Maintenant à l'envers - ici nous utilisons datetime.datetime.now() pour obtenir l'heure actuelle sous forme de datetime objet :

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

Dans le datetime cas, le strftime la méthode est en fait appelée sur le datetime objet lui-même, avec le paramètre de formatage en argument :

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

Dans votre situation, la raison pour laquelle vous obteniez une erreur est que time.time() renvoie un flottant :

>>> time.time()
1357980846.290231

Mais time.strftime a besoin d'un time tuple, similaire à ce que vous aviez ci-dessus. Sans entrer dans la spirale affolante du temps, une fonction telle que time.localtime() renverra le time susmentionné tuple et retournera comme prévu :

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