Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist der richtige Weg, um zwischen mysql datetime und python timestamp zu konvertieren?

Gerne aktualisiere ich dies, wenn ich es nicht richtig verstehe, aber hier sind ein paar Beispiele, die helfen können. Beachten Sie, dass dies die datetime verwendet Modul anstelle von time .

>>> import datetime

Hier richten wir einen Beispielzeitstempel ts ein und ein Format f :

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

Ähnlich wie oben verwenden wir die strptime Funktion (von datetime.datetime ), um unseren String in ein datetime umzuwandeln Objekt basierend auf dem Formatierungsparameter:

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

Jetzt umgekehrt – hier verwenden wir datetime.datetime.now() um die aktuelle Uhrzeit als datetime zu erhalten Objekt:

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

In der datetime Fall die strftime -Methode wird tatsächlich am datetime aufgerufen Objekt selbst, mit dem Formatierungsparameter als Argument:

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

In Ihrer Situation ist der Grund, warum Sie einen Fehler erhalten haben, time.time() gibt einen Float zurück:

>>> time.time()
1357980846.290231

Aber time.strftime braucht eine time Tupel, ähnlich wie oben. Ohne in die wahnsinnige Zeitspirale zu geraten, eine Funktion wie time.localtime() gibt die oben genannte time zurück Tupel und wird wie erwartet zurückgegeben:

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