[英]Datetime tuple to seconds tuple
What's the best way to convert a tuple of 90'000 datetime.datetime
objects which I get from the query below to a tuple of seconds since midnight? 将我从下面的查询中获取的9万个datetime.datetime
对象的元组转换为自午夜以来的秒数元组的最佳方法是什么?
eg 2014-06-13 10:33:20 should become 38000 (10*3600+33*60+20) 例如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)
Create a function to convert to seconds and then use a 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)
consider z consists of list of your time values then map()
考虑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]
You might want to select the value in seconds to begin with: 您可能要选择以秒为单位的值,开始于:
query = """
SELECT TIMESTAMPDIFF(SECOND,DATE(timestamp),timestamp), value
FROM measurements
WHERE timestamp BETWEEN %s AND %s AND sensor = %s
"""
the TIMESTAMPDIFF is there so you'll get only the time part in seconds and not the entire date. TIMESTAMPDIFF在那里,因此您只会获得以秒为单位的时间部分,而不是整个日期。
Try this 尝试这个
SELECT TIME_TO_SEC(DATE_FORMAT(your_date,'%H:%i:%s')) AS SECOND
FROM TABLE_NAME
Check TIME_TO_SEC and DATE_FORMAT function 检查TIME_TO_SEC和DATE_FORMAT函数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.