最近工作一直在用到Excel表格,打算将一些遇到的一些实用的方法和技巧整理下来,方便后续工作中使用。

需求

将时间转成时间戳

有些时候将Excel表格导入到数据库中,经常会发现时间格式不匹配,需要将时间格式转换成时间戳的格式来存储。

时间转换成时间戳

转换公式

1
= INT((A2-70*365-19)*86400-8*3600)

公式说明:

  • (A2-70*365-19)求出天数
    • 70*365-19中的70是指1900-1970年中的70年
    • -19是为了减去闰年多出来的19天
  • N*86400-8*3600是为了将天数换算成秒
    • N*86400换算成一天的总秒数
    • -8*3600减去中国的北京时区UTC+8,北京时间距离格林尼治时间有8小时的时差。

注意:Excel的日期实际上是序列值,它以1900-1-1=1为始,每过一天序列值加1;Unix时间戳是从1970-1-1 0:00:00开始到现在的秒数。

将时间戳转换成时间

时间戳转换成时间

话不多说,先上公式:

1
=TEXT((B2+8*3600)/86400+70*365+19,"yyyy-mm-dd hh:mm:ss")

公式说明:

  • (B2+8*3600)因为时间戳存储到是格林尼治时间,将格林尼治时间+8小时,调整到北京时间。
  • N/86400+70*365+19计算出天数
    • N/86400求出天数。
    • Excel的日期实际上是序列值,它以1900-1-1=1为始,而Unix时间戳是从1970-1-1 0:00:00开始到现在的秒数,所以需要+70年,同时在加上闰年即为:+70*365+19

注意:如果需要计算带毫秒的时间戳的话,需要将公式除以1000:=TEXT((B2/1000+8*3600)/86400+70*365+19,"yyyy-mm-dd hh:mm:ss.000")

将一列中的所有数据排列进一个单元格中

这个需求就是有些时候数据库需要按照表格中的id依次查询,但是直接复制Excel中的一列会导致查询出问题。所以将一列中的所有数据都排列进一个单元格中就可以避免这方面的问题。

第一步:初步处理数据

先将id后面加上英文的逗号,以便于后续隔开每行的数据。

将一列数据全部导入到一个单元格中-数据初步处理

之后就可以开始导入该列中的全部数据了,使用公式=PHONETIC(C2:C198),输入公式前,你需要知道一列的开头和结尾。

1
=PHONETIC(C2:C198)

效果如下图

将一列数据全部导入到一个单元格中-代入公式

接下来就可以将这些放入到数据库中查询了。

注意:这一串数据中最后一个位是带英文逗号的,在数据库查询中需要删除掉。

链接

封面图来源:https://www.pixiv.net/artworks/72114086