首页 > 解决方案 > UPDATE 是更改表中最近的 DATETIME 条目的最简单方法吗?

问题描述

我很高兴你在这里!:)

我有一张表,每晚从批量插入中填充。工作问题是我需要用前一天的日期标记最近的条目

我在利用 select 的其他表上使用了 getdate() -1,因此在将数据输入表之前更改了数据。

但是我如何从表中选择最近的条目并将它们的值更改为前一天的日期。我没有使用 UPDATE.. 但我的示例似乎是一个很好的用例。

但是,我不知道如何仅更新所需的(最近的)条目。我担心我不会不小心将所有表格条目标记为 1 天前。

下面是表结构的示例。非常感谢任何建议或示例

表格样本

标签: sqlsql-server

解决方案


您将需要update更改所需的日期值,但正如您所说,您不希望“不小心将所有表条目标记为 1 天前”。

所以在你写你的update语句之前,你需要掌握一个select完美隔离数据的语句。然后将语句修改为select语句是微不足道的update

但是您可能已经注意到,您所指的“日期”实际上是一种datetime类型,其中包含一个时间组件。因此,为了方便参考今天的日期,您需要忽略时间部分。您可以通过将其datetime转换为date类型来做到这一点。

像这样的东西:

select * from [your_table] where cast([DATE] as date) = cast(getdate() as date)

为了引用昨天,使用dateadd“添加”-1 天到今天的日期。那么您的更新将是这样的:

update [your_table] set [DATE] = cast(dateadd(day, -1, getdate()) as date) where cast([DATE] as date) = cast(getdate() as date)

推荐阅读