У меня есть таблица с 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))
это не обрабатывает обновление строк до сегодняшней даты. Вероятно, вычислите разницу между существующей датой и сегодня, тогда сделайте это? Написал выше неполный ответ. Если вы можете улучшить/изменить в этом направлении, было бы здорово! – user3546827