【问题标题】:How to update whole range of date with another range如何用另一个范围更新整个日期范围
【发布时间】:2012-03-29 16:35:48
【问题描述】:

我有一个表名 shiftsDates,其中包含以下列

**ShiftDateID**  **ShiftID** **ShiftDate** **IsNonShiftDate**
 1                 20          3/2/2012       false
 2                 20          3/3/2012       false
 3                 20          3/4/2012       true

如果用户为班次“20”选择另一个班次日期范围,我想更新 ShiftDate 和 IsNonShiftDate 列。从 UI 我只有 ShiftID 值。请给我任何提示我如何完成这项任务。谢谢

【问题讨论】:

  • 请添加更多细节。你正在使用什么样的价值观?您是否有 ShiftID 并且他们选择了您需要表格反映的不同日期范围?你用什么来确定 IsNonShiftDate 应该是什么?如果您向我们提供您想要发送到数据库的信息,以及您希望发送的结果是什么,这个问题会更容易回答。
  • 正是jeremy,基本上场景是班次日期不限于3行用户可以扩大或缩小班次20的班次日期范围,并且非班次日期反映周末和班次关闭的任何一天,如果它是工作日,则为假,我会混淆那个小麦来更新现有范围或删除第 20 班的所有记录并重新输入第 20 班的记录。这种任务应该使用什么方法请在这方面指导我我真的很纠结,谢谢

标签: sql sql-server sql-server-2008 stored-procedures sql-update


【解决方案1】:

我不知道我是否 100% 理解这个问题 :) 但我试一试。 您有一个 ShiftDateId 例如 2. 并且想要更新所有 3 行。

UPDATE YourTable
SET ShiftDate = <YourDate>
  , IsNonSiftDate = <true|false>
WHERE ShiftId = (SELECT ShiftId FROM YourTable WHERE ShiftDateId = <<ourId>)

但是试着回答给我更多的问题? - InNonShiftDate 列与工作日有关,所以你必须找出 Date 的 WeekDay() 吗? - 如果您得到一个范围(开始/结束),那么您想在该范围内的每一天插入一行? 这将是一个带有 CURSOR 的存储过程......

所以我想给我们更多关于你的环境的信息,以便给你一个更好的答案。

【讨论】:

  • 在问题中他说他只有ShiftID,所以你不需要像那样进行过滤。只需说 WHERE ShiftId = @ShiftId 就足够了。
  • 基本上场景是班次日期不限于3行用户可以扩大或缩小班次20的班次日期范围,我混淆了更新现有范围或删除班次20的所有记录并重新输入第 20 班的记录。这种任务应该使用什么方法,请在这方面指导我,我真的很纠结,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-01
  • 1970-01-01
  • 2020-03-03
相关资源
最近更新 更多