【发布时间】:2020-01-24 15:03:30
【问题描述】:
我在 SQL Server 中有下表。
它被称为 ScenarioData,我使用数据特别是 fieldValue 列将此数据附加到表单中。我已经实现了这个功能,但不幸的是,表单要求的开始日期必须是现在或未来 30 天。因为一旦日期过去,我就将数据存储在数据库中,这些值是多余的。我有一个存储过程,它根据scenarioDataId 从该表中选择所有值。
我正在考虑确保日期始终有效,我可以将其添加到此存储过程中,以使用当前日期更新相关行(coverStartDateDay、coverStartDateMonth、coverStartDateYear),以便始终接受该值。
我已经执行了以下 SQL
UPDATE dbo.ScenarioData
SET ScenarioData.FieldValue = DAY(CURRENT_TIMESTAMP)
WHERE ScenarioData.FieldName = "CoverStartDateDay";
我曾希望将当前日期附加到 feilfValue 中的行,其中列 fieldName 等于值coverStartDateDay。不幸的是,我收到一条错误消息,说 CoverStartDateDay 不是一列。首先我哪里出错了,其次我怎样才能实现我想要的功能?
提前致谢
【问题讨论】:
-
非常简单的语法错误。只需将双引号更改为单引号即可。
-
仅供参考,这看起来是非常严重的非规范化数据。使用单独的列并使用正确的数据类型会好得多。
(n)varchar不是“一刀切”的数据类型。 -
@Larnu 你能解释一下你所说的非规范化数据是什么意思,而且 (n)varchar 一种尺寸适合所有人。谢谢
-
你有一个代表很多东西的列,一个开始日期,一个邮政编码,一个门牌号码,这些东西是不同的数据类型,一个
date,一个int,一个varchar.每个都应该是它自己的列,具有正确的数据类型。在这种情况下,您应该建造宽而不是高。 -
好的,我理解你的观点并且我同意它,但我可能因为没有在我有这张表的原因后面添加上下文而不好。 FeidlName 中的所有内容都是来自 html 表单的 id。我创建了使用与数据库接口的 Web API 进行 ajax 调用的 Web 扩展。因此,FieldValue 中的所有数据都代表一个 html 元素 ID。例如,使用邮政编码并导致成为“#Postcode”。然后我使用它来搜索表单并将 fieldValue 数据附加到该字段,因此数据是所有内容的混合。
标签: sql sql-server sql-update