mysql - 在 Sql 中将 Bigint 数据转换为人类可读的日期时间
问题描述
我MySql
用下面的代码创建了一个表格并在其中提供数据
CREATE TABLE IF NOT EXISTS DB (
INN VARCHAR(200) NOT NULL,
Time BIGINT not NULL
);
现在我想得到一个表格,它将报告Time
分组时的最大值和最小值INN
。下面是我的代码 -
SELECT INN, from_unixtime(MIN(Time)), from_unixtime(MAX(Time)) FROM DB GROUP BY INN
我想将Time
值报告为正常日期时间而不是纪元时间。但是使用上面的代码,我得到了<NA>
值。
一个典型的Time
值就像1546380001264082944
有人可以帮我获得正确的代码来实现同样的目标。
解决方案
这里的问题与您使用的 unix 时间戳的精度有关。
考虑一下:
SELECT FROM_UNIXTIME(1546380001), FROM_UNIXTIME(1546380001264082944)
输出是:
2019-01-01T22:00:01Z (null)
您拥有的时间戳值 1546380001264082944 包含超出 MySQL 接受的精度级别。
的定义FROM_UNIXTIME
是:
FROM_UNIXTIME(unix_timestamp[,format])
该文档指出:
unix_timestamp
是一个内部时间戳值,表示自 '1970-01-01 00:00:00' UTC 以来的秒数
自 Unix 纪元以来,时间戳的精度明显高于秒数。
文档可在此处获得。
推荐阅读
- php - WooCommerce:将类名添加到分页项
- android - KeyguardManager 内存泄漏
- c# - System.Data.SqlClient.SqlException:“将数据类型 nvarchar 转换为日期时出错。”
- php - 新手 - 如果图像字段为空,则使用当前的个人资料图片 - PHP
- python-3.x - 指定的至少一个标签必须在 y_true 中,目标向量是数字
- typescript - 更改角度材料中的选择时如何从后端获取url到iframe
- javascript - 如何制作复选框过滤器?
- javascript - 如果语句为真,脚本在块内返回 console.log() 但不返回
- asp.net-core - 登录管理器
.PasswordSignInAsync() 抛出 System.Text.Json 对象循环异常 - clojure - 在 .edn 文件中使用 #inst 将时间戳播种到 clojure 中的 jdbc 数据库