Как обновить дату без изменения ее времени с помощью SQL Server?

#sql #sql-server #sql-server-2005 #datetime

#sql #sql-server #sql-server-2005 #datetime

Вопрос:

У меня есть один столбец в Mytable с именем StockDate, а его тип данных — DateTime.

Итак, моя таблица содержит запись следующим образом

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

Здесь я хочу обновить только дату StockDate как «2011-09-30». Но время должно быть таким же, как оно есть. Как это сделать? Пожалуйста, мне нужны все ваши предложения.

Комментарии:

1. Меня убивает, когда я задаю вопрос в Google для себя, нажимаю SO, и у вопроса нет голосов. Давайте, люди! Если вы отвечаете на вопрос, он заслуживает одобрения.

Ответ №1:

Вычислите разницу в целых днях и вычтите это…

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

Обратите внимание на использование yyyymmdd для SQL Server.

Ответ №2:

Вы можете использовать dateadd , datediff функции.

Ответ №3:

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

Вероятно, вы могли бы использовать DATEDIFF и DATEADD, чтобы перейти на 9/30/2011 без изменения времени.

Комментарии:

1. Ваша ссылка — MySQL, в вопросе указано SQL Server. Две СУБД имеют разный синтаксис и разную работу…

2. Ваше право, я думаю, что я неправильно истолковал MyTable как MySQL, хотя обе СУБД имеют функции DATEDIFF и DATEADD.