Преобразование метки времени в дату и время сохранения для замены метки времени - PullRequest
0 голосов
/ 26 марта 2020

Я использую SQL серверную базу данных и у меня есть столбец datetime.

SELECT
    [datetime]
FROM [database].[dbo].[data]

datetime
1584538200000
1584538260000
.............
1584538620000

Теперь я уже знаю, как преобразовать timestamp в datetime:

SELECT DATEADD(second, [datetime] / 1000, '1970-01-01')
FROM [database].[dbo].[data]

Но у меня вопрос, как сохранить эту преобразованную дату-время для замены старой метки времени в базе данных?

1 Ответ

1 голос
/ 26 марта 2020

Желательно хранить значения в правильном типе данных, т. Е. Datetime или datetime2 (как предложено @Dale K.

. Я бы посоветовал вам выполнить следующие шаги.

  1. Создать новую таблицу с двумя столбцами: PrimaryKeycolumn, NewDateTime column
CREATE TABLE data_copy(PKColumn INT, NewDatetimeColumn DATETIME2);
Загрузка данных в data_copy из исходной таблицы данных
 INSERT INTO data_copy(PKColumn, NewDatetimeColumn)
 SELECT PKColumn, DATEADD(second, [datetime] / 1000, '1970-01-01')
 FROM [database].[dbo].[data];
Теперь обновите столбец даты и времени до значения NULL
 UPDATE [database].[dbo].[data]
    SET [datetime]= NULL;
Теперь измените тип данных на DATETIME
--IF not null set accordingly
ALTER TABLE [database].[dbo].[data] ALTER COLUMN [datetime] DATETIME2 NULL; 
Теперь обновите значения даты и времени из таблицы копирования
UPDATE d
SET d.[datetime] = c.datetimecolumn
FROM [database].[dbo].[data] AS d
JOIN [database].[dbo].[data_copy] AS c
ON d.PKColumn = c.PKColumn 
...