如何使用SQL Server更新日期而不更改其时间?

时间:2011-10-03 04:22:35

标签: sql sql-server sql-server-2005 datetime

我在Mytable中有一个名为StockDate的列,其DataType是DateTime。

所以我的表包含如下记录

    SID                StockDate
   -----              ------------
     1                 2011-10-02 09:44:41.170
     2                 2011-10-02 09:48:23.234

这里我想仅将StockDate的日期更新为“2011-09-30”。但时间应该是一样的。这该怎么做?我需要你的所有建议。

3 个答案:

答案 0 :(得分:11)

在一整天中解决不同的问题并减去......

UPDATE
   MyTable
SET
   StockDate = DATEADD(day, DATEDIFF(day, StockDate, '20110930'), StockDate)
WHERE
   ...

请注意yyyymmdd用于SQL Server。

答案 1 :(得分:1)

http://msdn.microsoft.com/en-us/library/ms186724(v=SQL.90).aspx

你可以使用DATEDIFF和DATEADD让你自己到9/30/2011而不改变时间。

答案 2 :(得分:1)

您可以使用dateadddatediff functions