使用SQL查询创建新列

时间:2018-02-21 14:22:36

标签: sql sql-server

在MS SQL Server中,如何从数据查询中创建新列,例如说我有一个带有UNIX时间戳的表 -

timestamp  | value
------------------
1468073257 |  15
1468073589 |  22

以下查询输出每个时间戳的SQL日期对象

Select
    dateadd(S, [timestamp], '1970-01-01')
From myTable

我如何使用上面的查询来修改表格,如下所示:

timestamp  |         datetime          | value
----------------------------------------------
1468073257 |  2016-07-09 14:07:37.000  |  15
1468073589 |  2016-07-09 18:12:56.000  |  22

我想它有点像SELECT... INTO但在表格中

3 个答案:

答案 0 :(得分:0)

您的表可能正由现有应用程序填充,架构更改可能会破坏这些应用程序。

一种解决方案是制作VIEW

CREATE VIEW vw_myTable
AS
SELECT timestamp, DATEADD(S, timestamp, '1970-01-01') AS datetime, value
FROM myTable

查询视图。

SELECT *
FROM vw_myTable

答案 1 :(得分:0)

如果表存在,则可以使用INSERT INTO和SELECT语句。 例如:

INSERT INTO <your_table_name>(timestamp, datetime, value)
SELECT
   timestamp AS [timestamp],
   dateadd(S, [timestamp], '1970-01-01') AS datetime,
   value AS [value]
From myTabl

如果您没有桌子但想要创建新桌面,那么您可以使用SELECT ... INTO

例如:

SELECT 
    timestamp AS [timestamp],
    dateadd(S, [timestamp], '1970-01-01') AS datetime,
    value AS [value]
INTO <your_new_table> 
FROM myTabl

答案 2 :(得分:0)

由于您没有添加任何新数据(仅导出/格式化数据),我认为最好添加计算列。

ALTER TABLE [YourTableName]
ADD [FormattedDateColumnName] AS DATEADD(SECOND,[timestamp],'1/1/1970')