当excel中的日期以数字显示就会变成类似44721.81这样的数字,这是从1900年开始的天数。
而UNIX时间戳的 0 按照 ISO 8601 规范为 :1970-01-01T00:00:00Z.。也就是从1970开始。
那当我们需要在其他地方处理excel这种时间时就只需要加上70年就行了。接下来的问题就是如何知道这70年的秒数或毫秒数,可以在excel输入1970/1/1然后转换成数字得到25569,这是天数,秒则为25569*24*60*60=2209161600。毫秒的话再乘1000。精度取到秒和毫秒按实际情况定。
在excel中有个日期2022/6/9 19:31:57.850,当其为数字格式时为44721.813864,就叫他Excel时间。
如果需要在java中将其转化为日期,Date date = new Date(new Long(时间戳)这里需要毫秒精度的时间戳。先将Excel时间*一天的毫秒数(24*60*60*1000)-70年(2209161600*1000)-8小时时差(8*60*60*1000)=1654774317850。代入上方得到2022/6/9 19:31:57.850,转换正确。
如果需要在mysql中将其转化为日期,FROM_UNIXTIME(时间戳,'%Y-%m-%d %H:%i:%S')这里只需要秒精度的时间戳。先将Excel时间*一天的秒数(24*60*60)-70年(2209161600)-8小时时差(8*60*60)=1654774317。代入上方得到2022/6/9 19:31:57,转换正确。
当excel中的日期到mysql中变成数字了,只需要FROM_UNIXTIME(Excel时间*86400-2209190400,'%Y-%m-%d %H:%i:%s')就可以转化成正常时间了
MySql数据库怎样把Long时间与日期相互转换1、在MySQL 数据库中,“2009-09-15 00:00:00”转化为列为长整型的函数:
[java] view plain copy
select unix_timstamp("2009-09-15 00:00:00")*1000,
这里要注意,mysql数据库中的长整型,比Java中的长整型少了秒后面的毫秒数,所以要乘以1000,这样只有几毫秒之差
2、在mysql数据库中,“1252999488000”(java中的long型数据)转化为日期:
[java] view plain copy
select from_unixtime(1252999488)
①时间戳转换成日期
复制代码
代码如下:
FROM_UNIXTIME
例如:
数据表中
invest_time
存储的是时间戳,如
1429063399
使用
FROM_UNIXTIME
可以把时间戳转换为日期:
复制代码
代码如下:
select
FROM_UNIXTIME(invest_time,'%Y年%m月%d')
from
crm_invest_apply
执行结果:
②
把日期转换为时间戳,和
FROM_UNIXTIME
正好相反
复制代码
代码如下:
UNIX_TIMESTAMP
例如:
复制代码
代码如下:
SELECT
UNIX_TIMESTAMP('2015-04-29')
执行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)