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

Konvertering af Python DateTime-streng til heltal millisekunder

[Redigeret efter forslag i kommentarerne]

Brug af Ben Alperts svar på Hvordan kan jeg konvertere et datetime-objekt til millisekunder siden epoke (unix-tid) i Python vi kan gøre følgende:

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)

returnerer:

1435371005653

hvilket svarer til:Sat, 27 Jun 2015 02:10:05 GMT (som forventet)

Vi kan også bruge datetimes .strftime('%s') for at få unix-tid, endda millisekunder ved hjælp af følgende (men dette frarådes ):

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)

returnerer:

1435396205653

svarende til:lør, 27. juni 2015 09:10:05 GMT (på min mac i San Diego; Bemærk :dette er 7 timers fri, hvad vi måske havde forventet).

Årsagen til fejlen er beskrevet af J.F. Sebastian i kommentarerne til linket ovenfor og i dette svar vedrørende .strftime('%s') opførsel. J.F. Sebastian påpeger, at "det er ikke understøttet, det er ikke bærbart, det kan lydløst producere et forkert resultat for et bevidst datetime-objekt, det mislykkes, hvis input er i UTC (som i spørgsmålet), men den lokale tidszone er ikke UTC"



  1. MySQL LIKE vs LOCATE

  2. Er substr eller LIKE hurtigere i Oracle?

  3. Tjek, om et Postgres JSON-array indeholder en streng

  4. MySQL LIKE + php sprintf