我希望更新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
非常感谢!
答案 0 :(得分:2)
您想引用日期;
WHERE CREATED_DATE >= '2011-05-08'
(不带引号的2011-05-08
被视为计算结果为1998的数学表达式
答案 1 :(得分: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'
答案 2 :(得分:1)
UPDATE [Database].[dbo].[TB__TABLE]
SET SOLUTION_ID = 1
WHERE CAST(CREATED_DATE AS datetime) >= '2011-05-08'
答案 3 :(得分:1)
根本不需要演员。
并且您的查询将无法完全按照您预期的那样运行2011 - 5 - 8 = 1998,其中sql server是22/6/1905 ...
>= '2011-05-08'
答案 4 :(得分: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