【问题标题】:SQL Table Column that uses input from Another Column in Same Table使用来自同一表中另一列的输入的 SQL 表列
【发布时间】:2012-06-13 18:31:20
【问题描述】:

我想在表中有一个列,它根据同一个表中的另一列计算值。

例如, 我有“有效性”表,其中包含“DateManufactured”、“DateExpires”列 Date Expires 列必须计算值假设为 Datemanufactured 添加 30 天。 我们如何在 Visual Studio2010->DataSet Design->DataTable Column->Properties->Expression 中做到这一点 查看相关图片here

就 SQL Server 表达式而言,可能的表达式是什么? 请提出最佳解决方案。

提前致谢。

【问题讨论】:

  • 如果DateExpires总是DateManufactured 之后 30 天,那么也许你不应该存储它。搜索“数据库规范化”应该会让您走上更好的轨道。

标签: visual-studio-2010 sql-server-2008 dataset


【解决方案1】:

相信你在找DateAdd

SELECT DATEADD(day, 30, '15 Dec 1988')

【讨论】:

    【解决方案2】:
    select dateadd(day,30,getdate())
    

    这将采用当前日期(getdate()) 再加上 30 天。

    【讨论】:

    • 这不是我的要求 Ruzbeh。请仔细阅读更新后的问题并查看链接中的图片。
    【解决方案3】:

    我建议创建一个存储过程,将数据插入到表中,并带有需要插入的值的参数。然后,您可以根据您的日期参数进行计算。示例:

    Create Procedure InsertValidity
    (
      @City varchar(20),
      @Area varchar(20),
      ...
      @DatePosted datetime,
      ...
      @UserID
    )
    
    as
    
    declare @DurationFrom datetime
    set @DurationFrom = (select DATEADD(dd,30,@DatePosted)
    
    insert into Validity (City, Area, ..., DatePosted, ... UserID)
    values(@City, @Area, ..., @DatePosted,...@DurationFrom,...@UserID)
    

    这应该可以解决您的问题。只需通过将 ... 替换为您的其他数据来完成脚本,然后在您的应用程序中执行存储过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 2019-05-08
      相关资源
      最近更新 更多