在原始数据库中,我在varchar (string)中有很多列。
然后我有了这个DataBase:
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信息?
发布于 2020-10-28 22:04:30
这(https://www.db-fiddle.com/f/wm9iQFfbZFYZa4LLXCLFHf/2)
SELECT id, FROM_UNIXTIME(R) dt FROM pruebas在任何MySQL版本5.6.4或更高版本中,都可以将毫秒精度的UNIX时间戳转换为MySQL TIMESTAMP数据。
此显示结果的格式如下所示。
YYYY-MM-DD HH:mm:ss.ffffff其中秒数表示为小数十进制数,如48.384000。这(obvs)意味着48秒加384毫秒(根据美国使用.作为小数点的惯例)。这是个数字。
在这个格式化的时间戳中:2020-10-28 14:22:24.000000。该值为24.0。也就是说,零小数部分。这就解释了“疯狂的”零。
DATE_FORMAT()也许能够帮助您以一种更具视觉吸引力的方式格式化时间戳。例如,您可能只在小数点后显示3位数字(毫秒)。
https://stackoverflow.com/questions/64574352
复制相似问题