T-SQL如何在SmallDateTime列中更新小时?

时间:2011-03-13 22:01:29

标签: tsql

假设我的表中有一个SmallDateTime列。如何更新T-SQL中每行的小时数?

3 个答案:

答案 0 :(得分:2)

  1. 获取目标值的小时部分。
  2. 找出您想要的小时与找到的小时之间的差异。
  3. 将小时数差异添加到目标值。
  4. 剧本:

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

答案 1 :(得分:0)

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

会在每一行的YourDateColumn中添加1小时的时间值。

有关详细信息,请参阅this page

答案 2 :(得分:0)

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

会为您的专栏添加任意小时数。所以,如果你先摆脱时间组件:

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

并在以后添加小时组件它应该可以工作。

来自here

  

向日期时间添加或减去小时数   或者smalldatetime值,您将使用   DATEADD日期函数。该   DATEADD日期函数返回一个新的   基于添加的日期时间值   间隔到指定日期。该   DATEADD日期函数的语法是   如下:

DATEADD ( datepart , number, date )
     

datepart是参数   指定日期的哪一部分   返回一个新值。几个小时,你   可以使用HOUR或HH。号码是   用于增加datepart的值。   date是一个返回a的表达式   datetime或smalldatetime值,或a   日期格式的字符串。

     

这是一个如何使用的示例   DATEADD日期函数增加或   将日期时间值减少一定的时间   小时数:

SELECT DATEADD(HOUR, -12, GETDATE())AS [TwelveHoursAgo]
SELECT DATEADD(HH, 6, GETDATE()) AS [SixHoursLater]