介绍
在 MSSQL 中,时间戳是一个存储日期和时间值的二进制值。使用 datetime 数据类型可以将时间戳格式转换为日期时间格式。
时间戳转换为日期时间格式的方法
方法一:使用 CAST 函数
可以使用 CAST 函数将时间戳转换为日期时间格式。
SELECT CAST('19700101 00:00:00:000' + CONVERT(VARCHAR(20), timestamp_column, 14) AS DATETIME) AS datetime_column
FROM table_name;
在上面的代码中,将 timestamp_column 插入到 '19700101 00:00:00:000' 中,然后使用 CAST 函数将结果转换为 DATETIME 数据类型。将 datetime_column 更改为生成的列名,并将 table_name 更改为表名。
方法二:使用 DATEADD 函数
可以使用 DATEADD 函数将时间戳转换为日期时间格式。
SELECT DATEADD(ms, timestamp_column, '19700101') AS datetime_column
FROM table_name;
在上面的代码中,将 timestamp_column 插入到 '19700101' 中,然后使用 DATEADD 函数将毫秒(ms)添加到日期中。将 datetime_column 更改为生成的列名,并将 table_name 更改为表名。
案例展示
以下代码是一个示例表格:
CREATE TABLE example_table (
id INT PRIMARY KEY,
timestamp_col BIGINT NOT NULL
);
INSERT INTO example_table (id, timestamp_col)
VALUES
(1, 1631787200000),
(2, 1631787230000),
(3, 1631787260000);
以下代码将时间戳转换为日期时间格式:
SELECT id, CONVERT(DATETIME, DATEADD(ms, timestamp_col, '19700101')) AS datetime_col
FROM example_table;
以下是上述代码的输出结果:
id datetime_col
1 2021-09-16 00:00:00.000
2 2021-09-16 00:00:30.000
3 2021-09-16 00:01:00.000
以上代码将 timestamp_col 列的值从毫秒转换为 DATETIME 格式,并将生成的结果列命名为 datetime_col。
结论
转换时间戳为日期时间格式在 MSSQL 中是一个非常常见的操作。根据业务需求,可以使用 CAST 函数或 DATEADD 函数来实现转换。在实际使用时,需要根据具体的场景选择不同的方法。
参考资料:
Microsoft. (2021). CAST and CONVERT (Transact-SQL). https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15
Microsoft. (2021). DATEADD (Transact-SQL). https://docs.microsoft.com/en-us/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-ver15