Excel日期格式变数字,如何在mysql中处理回来

Excel日期格式变数字,如何在mysql中处理回来,第1张

    将Excel文件中的数据保存到mysql中时,发现日期变成了数字。

    当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')

执行结果:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8604012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存