2012-01-26 228 views
0

我在找更新SOLUTION_ID,其中CREATED_DATE大於或等於給定日期。更新值日期

我到目前爲止是更新表中的所有記錄。 CREATED_DATE有一個smalldatetime數據類型。

UPDATE [Database].[dbo].[TB__TABLE] 
SET SOLUTION_ID = 1 
WHERE CAST(CREATED_DATE AS datetime) >= 2011-05-08 

非常感謝!

回答

2

你想引用日期;

WHERE CREATED_DATE >= '2011-05-08' 

(無引號2011-05-08被視爲一個數學表達式,其值1998)

1

與SMALLDATETIME鑄造柱的是不需要的。請參閱樣本

create table #temp 
(
    dat smalldatetime, 
    Solution_ID int 
) 

insert into #temp(dat, Solution_ID)values(1, GETDATE()) 
insert into #temp(dat, Solution_ID)values(2, GETDATE()+1) 
insert into #temp(dat, Solution_ID)values(3, GETDATE()+2) 

select * from #temp 
where dat >= 'Your date' 

Update #temp 
Set Solution_ID = 4 
Where dat >= 'Your date' 
1
UPDATE [Database].[dbo].[TB__TABLE] 
SET SOLUTION_ID = 1 
WHERE CAST(CREATED_DATE AS datetime) >= '2011-05-08' 
1

無需投在所有的下面。

正如你在2011期待您的查詢也不會精確地工作 - 5 - 8 = 1998年其在SQL Server是22/6/1905 ...

>= '2011-05-08' 
0

使用DateDiff函數

DATEDIFF(dd, @GIVEN_DATE, CREATED_DATE) >= 0 

這將返回與給定日期和創建日期相差的天數。當函數返回零或更大時,則created_date大於給定日期。無需鑄造。

UPDATE [Database].[dbo].[TB__TABLE]   
    SET SOLUTION_ID = 1   
    WHERE DATEDIFF(dd, @GIVEN_DATE, CREATED_DATE) >= 0