SQL Server中的计算列规范 - 以小时或分钟为单位的时间差

alw*_*NET 0 sql sql-server

有没有办法在表格中有一列自动计算开始日期和结束日期之间的时间差?

(datediff(hour,[StartTime],[EndTime]))
Run Code Online (Sandbox Code Playgroud)

Nen*_*vic 5

ALTER TABLE yourTable
ADD yourColumn AS (datediff(hour,[StartTime],[EndTime]))
Run Code Online (Sandbox Code Playgroud)

SQLFiddle DEMO

编辑: 这是alter table的语法,当然你也可以在表创建过程中定义它

CREATE TABLE tbl1 
(
    startDate DATETIME, 
    enddate DATETIME,
    diffCol AS (datediff(hour,startDate,enddate))
);
Run Code Online (Sandbox Code Playgroud)

SSMS还在表设计器中有一个选项来为计算列添加公式

  • 可能还值得为NULLS添加一个case语句,例如`CASE WHEN ISNULL([StartTime],[EndTime])IS NULL THEN NULL ELSE datediff(hour,[StartTime],[EndTime])END` (2认同)