如何在SQL Server 2008中仅使用当前日期(没有当前时间)更新smalldatetime字段

时间:2014-07-24 01:54:35

标签: sql sql-server

我已将类型为[PriceStartOn]的新列smalldatetime添加到包含现有数据的表中。现在我想用当前日期填充列。

我使用了GETDATE()功能,但它也添加了当前时间。

最终结果应该是这样的

2014-07-24 00:00:00

我在网上搜索过,找不到任何样本。基于其他答案,我尝试了以下代码,它显示了正确的格式,但日期错误,它返回1905-08-08 00:00:00

DECLARE @date DATETIME 
SET @date = GETDATE()   

UPDATE Product
SET [PriceStartOn] = ('' + DATEPART( year, @date ) + '-' + DATEPART( MONTH, @date) + '-'  +  DATEPART( DAY, @date) + '')
WHERE [PriceStartOn]IS NULL;

有没有人有任何想法?

谢谢

1 个答案:

答案 0 :(得分:2)

只需将datetime投射到date

UPDATE Product
   SET PriceStartOn = cast(@date as date)
   WHERE PriceStartOn IS NULL;

您实际上并不需要变量,您可以直接在该函数上执行此操作:

UPDATE Product
   SET PriceStartOn = cast(getdate() as date)
   WHERE PriceStartOn IS NULL;