2017-09-21 87 views
0

我需要在SQL Server 2017中創建一個觸發器,它將在INSERT上觸發,並處理我的表的CreatedDate列。基於日期時間的SQL Server觸發器

CreatedDate是這種格式:2017-09-21 07:15:59.883

我想要做的是檢查CreatedDate列的時間,如果是7〜8之間,我需要它是否插入值到Notes列,是15和16之間我需要插入另一個,如果它在23和24之間我需要插入另一個。

我特別堅持在WHERE條款,我需要檢查小時。不知道如何制定這個。

+4

請分享您的代碼。 – PacoDePaco

+0

如果你提供你的代碼(如你已經有,但沒有工作),那麼答案更可能符合你的情況。 –

回答

3

假設你CreatedDate是datetime和不串

使用日期部分,以檢查CREATEDATE小時並相應地更新Notes列

UPDATE t 
SET Notes = 'a value' 
FROM inserted i 
     INNER JOIN mytable t ON i.pk = t.pk 
WHERE datepart(hour, CreateDate) in (7, 8) 

編輯:

UPDATE t 
SET Notes = case when datepart(hour, CreateDate) in (7, 8) then 'a value' 
        when datepart(hour, CreateDate) in (15, 16) then 'another value' 
        end 
FROM inserted i 
     INNER JOIN mytable t ON i.pk = t.pk 
WHERE datepart(hour, CreateDate) in (7, 8, 15, 16) 
+1

upvoted,如果CreateDate是一個有效的日期字符串,那就很好了 – LONG

+0

我怎樣才能把它放到CASE WHEN上下文中三個不同的小時? –

+0

你是否正在更新相同的'Notes'列或不同的列? – Squirrel

1

datepart

where case when DATEPART (HOUR, datetimeField) =7 then someValue 
      case when DATEPART (HOUR, datetimeField) =15 then SomeOtherValue 
      case when DATEPART (HOUR, datetimeField) =23 then AnotherDiffetentValue 
    end