sql >> Databáze >  >> RDS >> Mysql

Převod řetězce DateTime v Pythonu na celočíselné milisekundy

[Upraveno následující návrh v komentářích]

Pomocí Ben Alpert's odpověď na Jak mohu převést objekt datetime na milisekundy od epochy (čas unixu) v Pythonu můžeme udělat následující:

from datetime import datetime
def unix_time(dt):
    epoch = datetime.utcfromtimestamp(0)
    delta = dt - epoch
    return delta.total_seconds()

def unix_time_millis(dt):
    return int(unix_time(dt) * 1000)

a = datetime.strptime("2015-06-27T02:10:05.653000Z", "%Y-%m-%dT%H:%M:%S.%fZ")
unix_time_millis(a)

vrátí:

1435371005653

což je ekvivalentní:So, 27 Jun 2015 02:10:05 GMT (podle očekávání)

Můžeme také použít datetime .strftime('%s') k získání unixového času, dokonce i milisekund pomocí následujícího (to se ale nedoporučuje ):

from decimal import Decimal

int(Decimal(datetime.strptime("2015-06-27T02:10:05.653000Z", "%Y-%m-%dT%H:%M:%S.%fZ").strftime('%s.%f'))*1000)

vrátí:

1435396205653

ekvivalentní k:So, 27 Jun 2015 09:10:05 GMT (na mém počítači Mac v San Diegu; Poznámka :to je o 7 hodin méně, než jsme možná očekávali).

Příčinu chyby popisuje J. F. Sebastian v komentářích k výše uvedenému odkazu a v tomto odpověď týkající se .strftime('%s') chování. J.F. Sebastian poukazuje na to, že „není podporováno, není přenosné, může tiše produkovat nesprávný výsledek pro objekt s datem a časem, selže, pokud je vstup v UTC (jako v otázce), ale místní časové pásmo není UTC“



  1. Jak nainstalovat MySQL na Windows

  2. Získání sloupce z .sqlite obsahujícího více tabulek s více sloupci

  3. Číslo Mysql int(11) je mimo rozsah

  4. Je možné vytvořit sloupec v MySQL s výrazem jako výchozí hodnotou?