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

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

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

我如何更新那些已经存在于数据库中的 time(7) 列,以现在使用 SQL 来表示以滴答为单位的时间?

例如,如果我在数据库中有一个存储有“07:00”的列,那将类似于2384623897129873作为 BIGINT。我想知道如何进行这种转换。


不负相思意
浏览 186回答 2
2回答

富国沪深

找到了答案。正如这份文件所说: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

慕妹3146593

根据doco,日期时间中的刻度数从特定的起点开始 - 0001 年 1 月 1 日。这意味着如果您想将刻度作为偏移量存储到任意长度的一天中,您将需要减去在那天从 DateTime.Now.Ticks 开始。由于您将时间保持在不是 24 小时的循环中,因此请确保您仍然保留带有刻度偏移的日期 - 否则您将不知道900,000,000,000是从第 1 天偏移 25 小时还是从第 2 天偏移 1 小时。
打开App,查看更多内容
随时随地看视频慕课网APP