将“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栏

Interesting Posts