日期时间元组到秒元组

时间:2014-06-13 08:39:41

标签: python mysql datetime

将从下面的查询中获得的90� datetime.datetime个元组的元组转换为自午夜以来的秒数元组的最佳方法是什么?

e.g。 2014-06-13 10:33:20应该变成38000(10 * 3600 + 33 * 60 + 20)

query = """
        SELECT timestamp, value
        FROM measurements
        WHERE timestamp BETWEEN %s AND %s AND sensor = %s 
        """
cursor.execute(query, (start, stop, sensor))
row = cursor.fetchall()
timestamp, value=zip(*row)

4 个答案:

答案 0 :(得分:3)

创建一个转换为秒的函数,然后使用list comprehension

from datetime import datetime, timedelta
import random

# Generate some random datetime objects.
d = [datetime.today() + timedelta(seconds=i*600) for i in range(10)]

def dt_to_seconds(dt):
    return 3600*dt.hour + 60*dt.minute + dt.second

s = tuple([dt_to_seconds(i) for i in d])

print(s)
# (35545, 36145, 36745, 37345, 37945, 38545, 39145, 39745, 40345, 40945)

答案 1 :(得分:0)

考虑z包含您的时间值列表,然后map()

z=["10:33:20","4:50:22"]  

print map(lambda x:int(x.split(':')[0])*3600+int(x.split(':')[1])*60+int(x.split(':')[2]),z)
#output[38000, 17422]

答案 2 :(得分:0)

您可能希望以秒开始选择值:

query = """
    SELECT TIMESTAMPDIFF(SECOND,DATE(timestamp),timestamp), value
    FROM measurements
    WHERE timestamp BETWEEN %s AND %s AND sensor = %s 
    """

TIMESTAMPDIFF就在那里,所以你只能在几秒钟而不是整个日期获得时间部分。

答案 3 :(得分:0)

试试这个

SELECT TIME_TO_SEC(DATE_FORMAT(your_date,'%H:%i:%s')) AS SECOND
FROM TABLE_NAME

检查TIME_TO_SECDATE_FORMAT功能