2011-03-13 26 views
0

假設我的表中有一個SmallDateTime列。如何在T-SQL的每一行中更新小時?T-SQL如何在SmallDateTime列中更新小時?

+0

從什麼到什麼? – 2011-03-13 22:07:57

+0

從任何值到任何值(由用戶在存儲過程的參數中提供) – Tony 2011-03-13 22:09:39

+0

因此,您希望查找所有具有「18:00」時間分量的行並將其更新爲「19:00」? – 2011-03-13 22:11:41

回答

0
UPDATE YourTable SET YourDateColumn = DateAdd(hh, 1, YourDateColumn) 

將在每行中的YourDateColumn的時間值上加1小時。

有關更多信息,請參閱this page

0
UPDATE YourTableName 
SET YourSmallDateTimeColumn = DATEADD(HH, 1, YourSmallDateTimeColumn) 

將爲您的列添加任意小時數。因此,如果您先刪除時間分量:

SELECT CAST(CONVERT(char(8), YourSmallDateTimeColumn, 112) AS smalldatetime) 

並在稍後添加小時分量它應該工作。

here

加上或減去小時爲datetime 或smalldatetime值時,您將使用 的DATEADD日期功能。 DATEADD日期函數基於將 間隔添加到指定日期,返回新的 日期時間值。的DATEADD日期功能的 語法 如下:

DATEADD (datepart , number, date) 

日期部分是 指定的日期的哪一部分來 返回一個新的值的參數。幾小時後,您可以使用HOUR或HH。編號爲 用於增加datepart的值。 date是在日期格式中返回 datetime或smalldatetime值或 字符串的表達式。

下面是關於如何使用 DATEADD日期功能增加或 按一定 小時數減少datetime值的例子:

SELECT DATEADD(HOUR, -12, GETDATE())AS [TwelveHoursAgo] 
SELECT DATEADD(HH, 6, GETDATE()) AS [SixHoursLater] 
2
  1. 獲取目標值的小時部分。
  2. 找到您想要的小時和找到的小時之間的差異。
  3. 添加小時數與目標值的差值。

腳本:

UPDATE atable 
SET datetimevalue = DATEADD(hour, @hour - DATEPART(hour, datetimevalue), 
            datetimevalue) 
WHERE ...