Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Как правельно сделать update?


Автор: novichek 4.3.2008, 08:13
Народ если в поле типа smalldatetime со значением 2007-11-12 14:22:00 надо сделать update даты и оставляя время тем же, как это правельно сделать?

Автор: Itsys 4.3.2008, 19:51
Правильно при апдейте выделить из значения время и прибавить его к нужной дате

Автор: SharedNoob 5.3.2008, 09:43
А собственно какие проблемы ?
Код

   Update t set
          date=date+10
     from table t


где date - это ваша дата '2007-11-12 14:22:00'
а 10 - количество дней которые нужно прибавить (или убавить) в дате.
для подсчета разницы дней между датами можно использовать функцию datediff (см help)

Автор: nawok78 13.3.2008, 10:15
функция отсекает время от DATETIME'а
Код

CREATE FUNCTION DATETIME_AS_DATE (@DATE_TIME DATETIME)  
RETURNS DATETIME 
AS  
BEGIN
RETURN CAST (FLOOR(CAST(@DATE_TIME AS FLOAT)) AS DATETIME)
END

напиши еще такую же для время - и вперед 
Дата=Новая_Дата+Выделить_Время(Дата)

Автор: Magnifico 13.3.2008, 11:03
Цитата

функция отсекает время от DATETIME'а


Код

select dbo.DATETIME_AS_DATE(getdate())

че то неотсекается?       просто обнулятся.
2008-03-13 00:00:00.000

можно отсечь так дату
Код

select  left(convert(varchar(19), (cast(getdate() as smalldatetime)), 121),10)


и время
Код

select right(convert(varchar(19), (cast(getdate() as smalldatetime)), 121),9)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)