首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字符串中优化"SELECT datetime“的最佳方法

问从字符串中优化"SELECT datetime“的最佳方法
EN

Stack Overflow用户
提问于 2020-10-28 21:55:20
回答 1查看 37关注 0票数 1

在原始数据库中,我在varchar (string)中有很多列。

然后我有了这个DataBase:

代码语言:javascript
复制
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


CREATE TABLE `pruebas` (
`id` mediumint(8) UNSIGNED NOT NULL,
`R` varchar(18) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `pruebas` (`id`, `R`) VALUES
(1, '1603892188.033'),
(2, '1603892188.473'),
(3, '1603892188.613'),
(4, '1603892188.653'),
(5, '1603892188.688'),
(6, '1603892188.703'),
(7, '1603892188.713'),
(8, '1603892188.733'),
(9, '1603892188.753'),
(10, '1603892188.783'),
(11, '1603892188.814'),
(12, '1603892188.839'),
(13, '1603892188.855'),
(14, '1603892188.878'),
(15, '1603892188.903'),
(16, '1603892188.923'),
(17, '1603892188.953'),
(18, '1603892188.973');

ALTER TABLE `pruebas`
ADD UNIQUE KEY `id` (`id`);

ALTER TABLE `pruebas`
MODIFY `id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=107;
COMMIT;

我需要用毫秒从每一行恢复日期时间。

我真的需要在每一行上使用四个函数来恢复微秒的信息日期时间吗?(我有数百万行)。

我的问题可能是:

SELECT id, CONCAT(FROM_UNIXTIME(R, '%Y-%m-%d %H:%i:%s'), '.', SUBSTRING_INDEX(R, '.', -1)) FROM pruebas

感谢你的教训。

也许还有其他方法来获取datetime信息?

EN

回答 1

Stack Overflow用户

发布于 2020-10-28 22:04:30

这(https://www.db-fiddle.com/f/wm9iQFfbZFYZa4LLXCLFHf/2)

代码语言:javascript
复制
SELECT id, FROM_UNIXTIME(R) dt FROM pruebas

在任何MySQL版本5.6.4或更高版本中,都可以将毫秒精度的UNIX时间戳转换为MySQL TIMESTAMP数据。

此显示结果的格式如下所示。

代码语言:javascript
复制
YYYY-MM-DD HH:mm:ss.ffffff

其中秒数表示为小数十进制数,如48.384000。这(obvs)意味着48秒加384毫秒(根据美国使用.作为小数点的惯例)。这是个数字。

在这个格式化的时间戳中:2020-10-28 14:22:24.000000。该值为24.0。也就是说,零小数部分。这就解释了“疯狂的”零。

DATE_FORMAT()也许能够帮助您以一种更具视觉吸引力的方式格式化时间戳。例如,您可能只在小数点后显示3位数字(毫秒)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64574352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档