2012-08-30 51 views
0

我一直在尝试这一段时间,迄今为止研究没有得到更多的东西,除了我需要使用的东西DATEPART(我不知道如何使用它) 。我的SQL Server不是最好的。SQL Server:从日期时间获取小时,然后更改它

我有declare @DueDate datetime并通过游标@DueDate将始终是当前行的DueDatedatetime)列。这到目前为止完美没有问题。

现在我试图做的就是一小时出@DueDate,检查,看它是否为0,如果时间为0时,@DueDate小时设置为午夜,然后更新该行与此@DueDate交货期列变量。如上所述,我有光标和变量都工作,我只是不知道如何从@DueDate得到小时,检查那个小时的值是什么,并更新@DueDate变量,使其小时现在是午夜。我知道如何更新表格,这是很容易的部分。

在此先感谢!

回答

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开发需要不同的思考方式。不要考虑迭代,认为原子。你可以在一个陈述中做大多数事情(如果复杂的话,一个陈述可能很长)。

+0

这增加了一天,并没有工作,但我修改了代码工作,设置duedate = dateadd(hh,1,duedate)。 –

+3

@LandinMartens。因此,您将采用午夜的所有日期,并将其设置为凌晨1点。这不是你要求的,但很高兴我可以帮忙! –

相关问题