0

我已经尝试了一段时间,到目前为止,除了我需要使用一种叫做的东西DATEPART(我不知道如何使用它)之外,研究并没有让我走得更远。我的 SQL Server 不是最好的。

我有declare @DueDate datetime并且通过游标@DueDate将始终是当前行的DueDate( datetime) 列。到目前为止,这完美无缺。

现在我要做的是从 中取出小时@DueDate,检查它是否为 0,如果小时为 0,则将@DueDate小时设置为午夜,然后使用此@DueDate变量更新行 DueDate 列。

如上所述,我的游标和变量都在工作,我只是不知道如何从中获取小时@DueDate,检查小时值是多少,然后更新 @DueDate 变量,使其小时现在是午夜。我知道如何更新表格,这很容易。

提前致谢!

4

1 回答 1

3

我认为这完全符合您的要求,而无需使用光标。

UPDATE [MyTable]
SET DueDate = DATEADD(dd, 1, DueDate) -- add one day (set to midnight)
WHERE DATEPART(hh, DueDate) = 0 -- do this for dates where hour is zero (midnight)

请注意,您应该尽可能避免使用游标。SQL 开发需要不同的思维方式。不要考虑迭代,想想原子。您可以在一个语句中完成大多数事情(如果足够复杂,一个语句可能会很长)。

于 2012-08-30T22:19:35.923 回答