用于根据另一个日期和外键列添加日期的计算列

时间:2016-06-18 17:43:43

标签: sql-server calculated-columns

我在同一张表中有以下列:Password_Date (DATETIME, NOT NULL) Password_Period (INT, FOREIGN KEY of a look-up table) Password_Cycle (DATETIME, NOT NULL)

Password_Date
  • datetime会在用户更改密码时存储Password_Period

  • Password_Cycle是从查找表引用的外键列。 (说它的值是30)

  • 对于Password_Period列,我想在计算列中添加公式。 公式的逻辑是在Password_Date列添加30天(([Password_Date]+[Password_Period]))。

我在设计视图中尝试了公式Password_Cycle,但Function EliminarAcentos(texto) Dim i, s1, s2 s1 = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜàáâãäåçèéêëìíîïòóôõöùúûü" s2 = "AAAAAACEEEEIIIIOOOOOUUUUaaaaaaceeeeiiiiooooouuuu" If Len(texto) <> 0 Then For i = 1 To Len(s1) texto = Replace(texto, Mid(s1,i,1), Mid(s2,i,1)) Next End If EliminarAcentos = texto End Function 的数据类型属性变为空白。

请提供可能的解决方案以便开展此项工作。

注意:我必须只使用计算列公式,而不是函数或程序。

2 个答案:

答案 0 :(得分:2)

它在SSMS UI中变为空白,因为SQL Server为表达式中的计算列计算出数据类型本身。这不是设计师定义的东西。

虽然我不喜欢datetime + datetime语法,但它会int,而是会推荐DATEADD(DAY, Password_Period, Password_Date)

答案 1 :(得分:1)

在计算列中,数据类型变为空白。如果你想稍后使用它你可以随时将其转换为所需的类型。