为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
不负相思意 2021-12-05 17:12:52
我有一个表,其中包含一些 time(7) 类型的列。我现在需要将这些列从 time(7) 转换为 Ticks 作为 BIGINT(来自 .NET),因为 mssql 不支持超过 24 小时的时间。我如何更新那些已经存在于数据库中的 time(7) 列,以现在使用 SQL 来表示以滴答为单位的时间?例如,如果我在数据库中有一个存储有“07:00”的列,那将类似于2384623897129873作为 BIGINT。我想知道如何进行这种转换。
查看完整描述

2 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

找到了答案。

正如这份文件所说:

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



查看完整回答
反对 回复 2021-12-05
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

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

由于您将时间保持在不是 24 小时的循环中,因此请确保您仍然保留带有刻度偏移的日期 - 否则您将不知道900,000,000,000是从第 1 天偏移 25 小时还是从第 2 天偏移 1 小时。


查看完整回答
反对 回复 2021-12-05
  • 2 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信