【发布时间】:2015-09-14 17:09:05
【问题描述】:
我想将 UTC TimeDate 戳字符串转换为毫秒的整数值(可能需要为 64 位数量),以便在存储在 mySQL 数据库列中时占用更少的空间。这个 UTC 字符串是从另一个库生成的,我将它存储为一种每个用户的 GUID。
datetime 或 dateutil 能否将其转换为单个整数值(如“自纪元以来的毫秒数”)?还是我需要自己做?
使用这种方法解析:
myDateTime = dateutil.parser.parse("2015-06-27T02:10:05.653000Z")
print("Parsed datetime String is {0}, ordinal value is {1}".format(myDateTime, myDateTime.toordinal()))
给出输出:
Parsed datetime String is 2015-06-27 02:10:05.652999+00:00, ordinal value is 735776
…它只给出日期的序数值。此外,如果我有一个整数 653 毫秒的时间,那么我希望该解析的对象知道它有 653 毫秒,而不是 652999。
【问题讨论】:
-
为什么您认为存储整数或毫秒所需的空间比数据库中的原生
datetime格式要少? -
你可以做类似
int(datetime.strptime(time_string, your_format).strftime('%s'))*1e3的事情。这将是自纪元以来以毫秒为单位的浮点数,如果需要,您可以将其转换为 int。 -
@GordonLinoff - 我的意思是比 STRING 表示的空间少。
-
@SMGreenfield 。 . .这不是日期/时间格式在数据库中的工作方式。使用原生格式。
-
@Scott -- 你的建议非常接近,而且正是这种方法。这是我使用的精确语法: int(Decimal(datetime.datetime.strptime("2015-06-27T02:10:05.653000Z", "%Y-%m-%dT%H:%M:%S.%fZ ").strftime('%s.%f'))*1000)) 我假设你的意思是乘以 3e8 (1000),而不是 1e3 (483)....
标签: python mysql python-2.7 datetime datetime-format