如何将1970年之前的UNIX时间转换为MySQL中的日期格式?

前端之家收集整理的这篇文章主要介绍了如何将1970年之前的UNIX时间转换为MySQL中的日期格式?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个数据库使用unix时间作为其日期(我正在使用MysqL).我想以每日日期格式检索日期.这是我的查询
  1. SELECT FROM_UNIXTIME(time_created) FROM member

这适用于1970年以后的日期(例如,1314162229),但不适用于1970年之前的日期(例如,-769338000).这附近有工作吗?

@H_301_6@
一种可能的解决方法是在一定年限内具有与秒数相对应的恒定方便(最好是4的倍数).您可以添加此常量,转换时间,然后减去所选的年数.

示例:选择40年.

确定常数:

  1. MysqL [files]> select adddate(from_unixtime(0),interval 40 year);
  2. +---------------------------------------------+
  3. | adddate(from_unixtime(0),interval 40 year) |
  4. +---------------------------------------------+
  5. | 2010-01-01 01:00:00 |
  6. +---------------------------------------------+
  7. 1 row in set (0.09 sec)
  8.  
  9. MysqL [files]> select unix_timestamp(adddate(from_unixtime(0),interval 40 year));
  10. +-------------------------------------------------------------+
  11. | unix_timestamp(adddate(from_unixtime(0),interval 40 year)) |
  12. +-------------------------------------------------------------+
  13. | 1262304000 |
  14. +-------------------------------------------------------------+
  15. 1 row in set (0.09 sec)

现在你可以在1930和20xx之间的每个unix时间戳x使用它.

  1. select subdate(from_unixtime(x+1262304000),interval 40 year);

用你的例子-769338000,你得到

  1. MysqL [files]> select subdate(from_unixtime(-769338000+1262304000),interval 40 year);
  2. +-----------------------------------------------------------------+
  3. | subdate(from_unixtime(-769338000+1262304000),interval 40 year) |
  4. +-----------------------------------------------------------------+
  5. | 1945-08-15 17:00:00 |
  6. +-----------------------------------------------------------------+
  7. 1 row in set (0.09 sec)

猜你在找的Bash相关文章