#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.