MSSQL将时间戳格式转换为日期时间格式

介绍

在 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

数据库标签