如何将Time(7)转换为.NET Ticks?

时间:2018-08-20 20:32:10

标签: c# sql-server

我有一个表,其中包含一些time(7)类型的列。

我现在需要将这些列从time(7)转换为Ticks作为BIGINT(来自.NET),因为mssql不支持超过24小时的时间。

如何使用SQL更新数据库中已经存在的time(7)列,现在以滴答表示时间?

例如,如果我在数据库中存储了存储了“ 07:00” 的列,则该文本类似于 2384623897129873 作为BIGINT。我想知道如何进行转换。

2 个答案:

答案 0 :(得分:1)

根据the doco,日期时间中的滴答数从特定的起点-0001年1月1日开始。这意味着,如果要将滴答作为偏移量存储到任意长度的一天中,则需要减去从DateTime.Now.Ticks开始的那一天开始的滴答数。

由于您将时间保持在非24小时的周期内,因此请确保您仍保留带有刻度线的日期-否则,您将不知道900,000,000,000是否比第1天或第1天偏移25小时从第2天开始偏移小时。

答案 1 :(得分:1)

找到答案。

如本文档所述:

https://docs.microsoft.com/pt-br/dotnet/api/system.timespan.ticks?view=netframework-4.7.2#System_TimeSpan_Ticks

  

一毫秒有10,000个滴答声

所以我将Time(7)转换为毫秒,然后乘以10.000:

SELECT CONVERT(BIGINT, DATEDIFF(MILLISECOND, 0, MyCurrentDuration)) * 10000 as Ticks from CalculationResult