将“x小时和分钟”转换为秒
a)所以我有一个.csv数据的大文件夹,里面有一个关于时间长度的列,其中的单元格是'x min y sec'(例如15分29秒)或'x hrs y min z sec'(例如1小时48分钟28秒)。 单元格由文本格式化。
我想批量改变他们的秒数,但我不知道从哪里开始。 我无法获得另一种格式的数据。
我想过用'hrs','min'或'sec'作为分隔符,但是我不知道如何从那里移动。 我也想过使用''作为分隔符,但是第一列根据持续时间填充了几小时或几分钟。
我也考虑过使用PostgreSQL的SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours')
,但是我还没有能够解决如何在表格的列上使用它。
b)有没有更好的方法来改变这个时间格式“星期五2014年3月14日11:29:27 EST”到时代? 现在,我正在考虑在Excel中使用macros来摆脱“星期五”和“EST”,然后将列重新组合在一起,然后在PostgreSQL中使用to_timestamp函数。
你可以做:
SELECT EXTRACT(EPOCH FROM column_name::interval) FROM my_table;
interval
可以使用常规时间单位(如hour
),缩写( hr
)和复数( hours
)。 虽然我不确定复数和缩写( hrs
)的组合。 如果这不起作用,则UPDATE
该列并将子string“hrs” replace()
为“小时”。
如果要保存表中的秒数,则将上述语句转换为UPDATE
语句:
UPDATE my_table SET seconds_column = extract(epoch FROM column_name::interval);
在Excel中,如果只有这两种格式的数据,并从A2
开始,则可以使用此公式在B2
复制下来获得秒数:
=IFERROR(LEFT(A2,FIND("hrs",A2)-1)*3600,0)+SUM(MID(0&A2,FIND({"min","sec"},0&A2)-3,2)*{60,1})
它find相关的文本,然后得到每个前面的数字,并乘以相关的数字得到秒
我会用空格作为分隔符,然后检查第二列。 如果它包含string“hrs”,那么你的秒数答案是:
3600 *第1列+60 *第3列+第5列
否则它是:
60 *第1栏+第3栏