如何将1970年之前的UNIX时间转换为MySQL中的日期格式?
发布时间:2020-12-16 01:35:52 所属栏目:安全 来源:网络整理
导读:我有一个数据库使用unix时间作为其日期(我正在使用mySQL).我想以每日日期格式检索日期.这是我的查询: SELECT FROM_UNIXTIME(time_created) FROM member 这适用于1970年以后的日期(例如,1314162229),但不适用于1970年之前的日期(例如,-769338000).这附近有工
我有一个数据库使用unix时间作为其日期(我正在使用mySQL).我想以每日日期格式检索日期.这是我的查询:
SELECT FROM_UNIXTIME(time_created) FROM member 这适用于1970年以后的日期(例如,1314162229),但不适用于1970年之前的日期(例如,-769338000).这附近有工作吗?
一种可能的解决方法是在一定年限内具有与秒数相对应的恒定方便(最好是4的倍数).您可以添加此常量,转换时间,然后减去所选的年数.
示例:选择40年. 确定常数: MySQL [files]> select adddate(from_unixtime(0),interval 40 year); +---------------------------------------------+ | adddate(from_unixtime(0),interval 40 year) | +---------------------------------------------+ | 2010-01-01 01:00:00 | +---------------------------------------------+ 1 row in set (0.09 sec) MySQL [files]> select unix_timestamp(adddate(from_unixtime(0),interval 40 year)); +-------------------------------------------------------------+ | unix_timestamp(adddate(from_unixtime(0),interval 40 year)) | +-------------------------------------------------------------+ | 1262304000 | +-------------------------------------------------------------+ 1 row in set (0.09 sec) 现在你可以在1930和20xx之间的每个unix时间戳x使用它. select subdate(from_unixtime(x+1262304000),interval 40 year); 用你的例子-769338000,你得到 MySQL [files]> select subdate(from_unixtime(-769338000+1262304000),interval 40 year); +-----------------------------------------------------------------+ | subdate(from_unixtime(-769338000+1262304000),interval 40 year) | +-----------------------------------------------------------------+ | 1945-08-15 17:00:00 | +-----------------------------------------------------------------+ 1 row in set (0.09 sec) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |