首页 > 数据库    日期:2020-04-14 / 来自互联网 / 浏览

我接触的绝大部分PHP的Web项目,在存时间时,都是存的Unix时间戳,字段类型是int(10),显示的东西类似于1108879309这种数字。

批量修改这种Unix时间戳的MYSQL语句是:

UPDATE `table` SET addtime = unix_timestamp(DATE_SUB(from_unixtime(addtime), INTERVAL 1 MONTH)) WHERE 1

解释上面MYSQLSQL语句中涉及到的SQL函数:
1,用FROM_UNIXTIME()函数将Unix时间戳转换成 YYYY-MM-DD H:I 这种常见的格式,语法:FROM_UNIXTIME(unix_timestamp,format)
2,用DATE_SUB()函数从日期中减去指定的时间间隔,语法:DATE_SUB(date,INTERVAL expr type);如果要加上指定的时间间隔,用DATE_ADD(date,INTERVAL expr type)
DATE_SUB()DATE_ADD()函数不能直接操作Unix时间戳,所以用FROM_UNIXTIME()转换了一下
3,把Unix时间戳转换成 YYYY-MM-DD H:I 这种格式后,减去指定的时间间隔后,肯定要再转换成Unix时间戳才能更新到数据库中,用unix_timestamp()函数

以上三个函数嵌套使用,就解决了问题。

再补充下Unix时间戳的知识:
1,Unix时间戳是指从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
2,对照表

时间
1分钟 60
1小时 3600
1天 86400
1周 604800
1月(30.44天) 2629743
1年(365.24天) 31556736

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章