【问题标题】:How to add time (years) to a date column in a table如何将时间(年)添加到表中的日期列
【发布时间】:2014-02-18 16:35:44
【问题描述】:

我正在使用 Access 2007 中的 Northwind Microsoft Access 数据库。在 Orders 表中有三个日期字段:OrderDate、RequiredDate 和 ShippedDate。

所有这些字段都是 1994-1996 年的。我正在尝试将其输入 ETL 系统,但该系统不允许超过 15 年的日期。

我想为这三个字段中的每一个添加 10 年。

我正在尝试这样的事情: 更新订单 设置 OrderDate = DateAdd("yyyy",10,OrderDate)

...但收到错误“参数太少。应为 1。” 当我看到该错误时,通常是使用的列名中的拼写错误,但我在这里的任何地方都没有看到它。有什么建议吗?

【问题讨论】:

  • 你试过UPDATE Orders set OrderDate = DateAdd("yyyy",10,[OrderDate]) ...
  • 谢谢@bhs。我刚刚尝试过,但仍然得到同样的错误。
  • 语法对于您发布的内容来说很好,您的查询是否还有更多您尚未发布的内容?
  • 在 Access 查询设计器中尝试您的 UPDATE 查询。当您运行它时,Access 将显示一个输入对话框,询问参数值。该对话框包括任何 Access 认为是参数的“名称”。参数名称是什么?
  • 如果表名为 Orders,则问题中的 UPDATE 查询确实有效。如果表名为Order,那么您需要在其周围加上方括号[],因为ORDER 是SQL 中的保留字。 @HansUp 就如何确定实际问题提出了很好的建议。

标签: sql ms-access ms-access-2007 dateadd


【解决方案1】:

问题绝对不是由于DateAdd 的语法错误。这个即时窗口示例演示了您的 DateAdd 语法是有效的。

? DateAdd("yyyy",10,Date())
2/18/2024 

它在 VBA 代码或查询中的工作方式相同。

请注意,Access 字段可以同时具有 namecaption 属性。

当为字段分配了标题时,在许多情况下会使用该标题而不是字段名称。一种这样的情况是当您直接在数据表视图中打开表时。

因此,在您的情况下,表格可能包含标题为 "OrderDate" 的字段,但实际的字段名称是其他名称。在查询中,您必须使用名称,因为 Access 无法识别标题,假定它必须是一个参数,并希望您为该参数提供一个值。

检查表设计以确保您在查询中使用了实际的字段名称。

您可以通过在 Access 查询设计器中构建查询来避免此问题。将其作为SELECT 查询启动,然后从可用的字段名称中进行选择。在您将其作为SELECT 正常工作后,您可以将其转换为您实际需要的UPDATE

Access 提供方便的手持功能。有时他们会以你的方式得到它并变得烦人。但在这种情况下,Access 的有用倾向可以真正提供帮助。 :-)

原来我有一份来自 Access 2007 的 Northwind 副本。至少在我的副本中,该字段名为“订购日期”。所以标题不是罪魁祸首。只需将字段名称括起来,以便 Access 将其识别为“一件事”而不是两件事。

UPDATE Orders
SET [Order Date] = DateAdd("yyyy",10,[Order Date]);

请注意,这是查询设计器可以帮助您避免的另一个问题示例。

【讨论】:

    【解决方案2】:

    我最终进入了创建然后查询设计。在那里,功能区现在将设计显示为选项卡。我单击更新,然后单击 SQL 视图并粘贴它,然后切换到设计视图。保存查询后,我尝试运行它,但由于某些安全功能被禁用而失败。我启用了它并更新了数据库。 这最终做到了:

    UPDATE Orders SET RequiredDate = DateAdd("yyyy",10,RequiredDate);
    UPDATE Orders SET OrderDate = DateAdd("yyyy",10,OrderDate);
    UPDATE Orders SET ShippedDate = DateAdd("yyyy",10,ShippedDate);
    

    感谢大家的帮助。

    【讨论】:

      【解决方案3】:

      代替 DATEADD("yyyy", 10, OrderDate)

      设为 DATEADD(year, 10, OrderDate)

      【讨论】:

      • 谢谢。我试过了,但仍然得到“参数太少。预期为 1”。错误。我使用的 DateAdd 语法来自:techonthenet.com/access/functions/date/dateadd.php
      • 好的,我在考虑 SQL。 bhs 在您原始帖子中的评论应该可以工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 2021-09-27
      • 2018-07-19
      • 1970-01-01
      相关资源
      最近更新 更多