2014-10-08 4 views
0

У меня есть таблица с 3-мя столбцами: ID (INT, PK) Время (DateTimeOffset) StoredValue (интермедиат)TSQL дата обновления с сегодня из DateTimeOffset колонки

мне нужно обновить только дату в время столбец с сегодняшним днем, каждой строки в соответствии с часовым поясом, который уже сохранен в datetimeoffset (но не изменяйте информацию о времени или часовом поясе). Например, если сохраненное значение: 2014-10-08 08: 25: 46.0000000 +04: 00 и сегодня для этого часового пояса: 2014-10-20, оно должно стать: 2014-10-20 08: 25: 46.0000000 + 04:00, но если сегодня по-прежнему 2014-10-19 для этого часового пояса, он должен быть установлен: 2014-10-19 08: 25: 46.0000000 +04: 00.

Как я могу это сделать в TSQL?

UPDATE: Возможно, грязный и неполный ответ, что не правильно обновлять каждую строку в соответствии с часовым поясом, но, основываясь на ответах ниже:

DECLARE @date DATETIMEOFFSET = SYSDATETIMEOFFSET() 
DECLARE @date2 datetimeoffset(4) = '12-10-25 12:32:10.1237 +01:0' 
CONVERT(DATETIMEOFFSET, DATETIMEOFFSETFROMPARTS(datepart(yyyy, @date), datepart(mm, @date), datepart(dd, @date), datepart(HH, @date2), datepart(MI, @date2), datepart(SS, @date2), datepart(MILLISECOND, @date2), CAST((FLOOR(DATEPART(TZ, @date2))/60) AS VARCHAR(10)), CAST((DATEPART(TZ,@date2)%60) AS VARCHAR(10)), 3)) 

ответ

0
DECLARE @date DATETIMEOFFSET = '2013-01-31 10:02:12 +02:00' 

select @date,CONVERT(DATETIMEOFFSET, DATEADD(day, 18, @date)) 

Пожалуйста, свяжитесь с выше кодом.

+0

это не обрабатывает обновление строк до сегодняшней даты. Вероятно, вычислите разницу между существующей датой и сегодня, тогда сделайте это? Написал выше неполный ответ. Если вы можете улучшить/изменить в этом направлении, было бы здорово! – user3546827

0

Пожалуйста, попробуйте это!

dateadd(dd,datediff(dd,timecolumn,getdate()),timecolumn) 
Смежные вопросы