Как преобразовать time(7)
в bigint
в T-SQL?Преобразование времени (7) в bigint T-SQL
Я пытаюсь обновить и преобразовать данные из столбца с данными time(7)
в другой столбец, который является типом bigint
.
Как преобразовать time(7)
в bigint
в T-SQL?Преобразование времени (7) в bigint T-SQL
Я пытаюсь обновить и преобразовать данные из столбца с данными time(7)
в другой столбец, который является типом bigint
.
Предполагая, что, когда вы говорите «тик», вы имеете в виду секунды. Если вы имеете в виду миллисекунды, измените «ss» на «ms».
Declare @time7 Time(7)
Set @time7 = Convert(Time(7),Getdate())
Select Convert(Bigint,Datediff(ss,0,@time7))
datediff
возвращает Int, так что если вы хотите полную точность времени, (7), что нужно сделать некоторые расчеты. Использование microsecond
или nanosecond
в datediff
может привести к переполнению.
declare @T time(7) = '23:59:58.9999999'
select datediff(second, '00:00', @T) * cast(10000000 as bigint) + right(@T, 7)
Результат:
863989999999
Важно использовать 00:00
вместо 0
в datediff
. С 0
ваше значение времени будет неявно преобразовано в datetime
, и значение, используемое выше, будет преобразовано в значение 23:59:59
, так как datetime
округляется до 0,000, 0,003 или 0,007.
Все это было бы намного проще, если datediff
supported bigint
.
В чем заключаются отношения? Вы хотите время в секундах с «00: 00: 00.0000000»? минут? миллисекунды? nanaoseconds? Что представляет ценность bigint? –
Он будет отображать метки временного интервала, но изначально я хочу преобразовать все данные, которые у меня есть как 'time (7)' в базе данных, в 'bigint' –
. Попробуйте быть более четкими, покажите некоторые примеры данных и ожидаемые результаты , – Kaf