У меня есть таблица со столбцом даты, который отформатирован как DATETIME(3)
.Я хотел бы преобразовать его в BIGINT(13)
, в котором эта дата и время хранятся как миллисекунды с эпохи Unix.
Как я могу изменить определение столбца и преобразовать все существующие значения в таблице, не теряя ни одного изданные?
Я знаю, что вы можете преобразовать дату и время в миллисекунды, используя часовой пояс:
SELECT CAST(
UNIX_TIMESTAMP(
CONVERT_TZ('2019-04-22 00:37:47.843', '+00:00', 'SYSTEM')
) * 1000 AS INT
);
Что возвращает: 1555893467843
Таблица создана кактакие:
CREATE TABLE `usages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uuid` varchar(36) NOT NULL,
`datetime` datetime(3) NOT NULL,
PRIMARY KEY (`id`),
);
Хотелось бы, чтобы это выглядело так:
CREATE TABLE `usages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uuid` varchar(36) NOT NULL,
`unix` bigint(13) NOT NULL,
PRIMARY KEY (`id`),
);