Дата обновления TSQL с сегодняшнего дня из столбца datetimeoffset
У меня есть таблица с 3 столбцами: ID (int, PK) Время (datetimeoffset) StoredValue (int)
Мне нужно обновить только дату в столбце "Время" с сегодняшним днем, каждая строка соответствует часовому поясу, который уже сохранен в 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?
ОБНОВЛЕНИЕ: возможно, грязный и неполный ответ, который не корректно обновляет каждую строку в соответствии с часовым поясом, но основан на ответах ниже:
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))
2 ответа
DECLARE @date DATETIMEOFFSET = '2013-01-31 10:02:12 +02:00'
select @date,CONVERT(DATETIMEOFFSET, DATEADD(day, 18, @date))
Пожалуйста, проверьте с кодом выше.
Пожалуйста, попробуйте это!
dateadd(dd,datediff(dd,timecolumn,getdate()),timecolumn)