MySQL数据库表有一列的数据类型为TIME(http://dev.mysql.com/doc/refman/5.0/en/time.html)。当访问表数据时,Python将该列的值作为Datetime.timeDelta对象返回。我怎么才能从中提取时间呢?(我并不是真的从Python手册中理解了时间增量的用途)。
例如,表中的列包含值“18:00:00”PYTHON-MySQLdb将其返回为Datetime.timeDelta(0,64800)
请忽略下面的内容(它返回不同的值)-
- 新增:不管表中的时间值是多少,python-MySQLdb似乎只返回日期时间.timeDelta(0,64800)。*
注:我使用的是Python2.4
2条答案
按热度按时间a7qyws3x1#
奇怪的是,Python以
datetime.timedelta
的形式返回值。它可能应该返回datetime.time
。无论如何,它看起来像是返回自午夜以来经过的时间(假设表中的列是下午6:00)。要转换为datetime.time
,您可以执行以下操作:当然,如果您需要更多信息,
datetime.datetime.min
和datetime.time()
将作为datetime模块的一部分进行记录。顺便说一句,
datetime.timedelta
是两个datetime.datetime
值之间的差异的表示。所以,如果你用一个datetime.datetime
减去另一个datetime.datetime
,你会得到一个datetime.timedelta
。如果将datetime.datetime
与datetime.timedelta
相加,则会得到datetime.datetime
。这就是上面的代码的工作方式。xxhby3vn2#
在我看来,MySQL中的Time类型旨在表示时间间隔,就像Python中的Datetime.timeDelta一样。从您引用的文档中:
时间值的范围可以是‘-838:59:59’到‘838:59:59’。小时部分可能很大,因为时间类型不仅可以用来表示一天中的时间(必须小于24小时),还可以用来表示经过的时间或两个事件之间的时间间隔(可以远远大于24小时,甚至是负数)。
除了从日期时间增量转换为日期时间之外,另一种方法是将列类型更改为日期时间,而不使用日期字段。
-插入:
-选择:
在DateTime对象上调用DateTim.time()以获取Time对象。