update fuiang_infor set h_daycount=datediff(day,h_time,getdate())

解决方案 »

  1.   

    晕了,本不该用
    h_daycount 机器安装距今多少天了
    的呀
      

  2.   

    那怎么用呀 大哥?
    怎么遍历整个表
      h_id        h_time h_bei h_daycount
    GBAH001012    2005-7-29     黄山 NULL
    GBAH001013    2005-7-29  黄山 NULL
    GBAH001014    2005-7-20  黄山 NULL

    用count(*) from huiang_infor 么?
    我想把它更新成:
    h_id        h_time h_bei h_daycount
    GBAH001012    2005-7-29     黄山 4
    GBAH001013    2005-7-29  黄山 4
    GBAH001014    2005-7-20  黄山 13
    怎么更新时间 
      

  3.   

    --创建测试环境
    declare @t table (h_id  varchar(10),h_time datetime,h_bei varchar(10),h_daycount int )
    insert into @t select 'GBAH001012','2005-7-29','黄山',null
    union all select 'GBAH001013','2005-7-29','黄山',null
    union all select 'GBAH001014','2005-7-20','黄山',null--更新语句
    update @t set h_daycount=datediff(day,h_time,convert(varchar(10),getdate()))
    --结果
    h_id       h_time                                                 h_bei      h_daycount  
    ---------- ------------------------------------------------------ ---------- ----------- 
    GBAH001012 2005-07-29 00:00:00.000                                黄山         4
    GBAH001013 2005-07-29 00:00:00.000                                黄山         4
    GBAH001014 2005-07-20 00:00:00.000                                黄山         13(所影响的行数为 3 行)
      

  4.   

    用计算列!!!h_id 机器编号
    h_time 机器安装时间
    h_area 机器所在地区
    h_daycount 机器安装距今多少天了h_daycount as datediff(d,h_time,getdate())
      

  5.   

    computed_column_expression是定义计算列值的表达式。计算列是物理上并不存储在表中的虚拟列。计算列由同一表中的其它列通过表达式计算得到。例如,计算列可以这样定义:cost AS price * qty。表达式可以是非计算列的列名、常量、函数、变量,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。计算列可用于选择列表、WHERE 子句、ORDER BY 子句或任何其它可使用常规表达式的位置,但下列情况除外: 计算列不能用作 DEFAULT 或 FOREIGN KEY 约束定义,也不能与 NOT NULL 约束定义一起使用。但是,如果计算列由具有确定性的表达式定义,并且索引列中允许计算结果的数据类型,则可将该列用作索引中的键列,或用作 PRIMARY KEY 或 UNIQUE 约束的一部分。 
    例如,如果表中含有整型列 a 和 b,则可以在计算列 a+b 上创建索引。但不能在计算列 a+DATEPART(dd, GETDATE()) 上创建索引,因为在以后的调用中,其值可能发生改变。计算列不能作为 INSERT 或 UPDATE 语句的目标。 
    说明  表中计算列所使用的列值因行而异,因此每行的计算列值可能不同。计算列的为空性是由 SQL Server 根据使用的表达式自动确定的。即使只有不可为空的列,大多数表达式的结果也认为是可为空的,因为可能的下溢或溢出也将生成 NULL 结果。使用 COLUMNPROPERTY 函数(AllowsNull 属性)查看表中任何计算列的为空性。通过指定 ISNULL(check_expression, constant),其中常量为替代任何 NULL 结果的非 NULL 值,可为空的表达式 expr 可以转换为不可为空的表达式。