代码之家  ›  专栏  ›  技术社区  ›  alansiqueira27

如何将时间(7)转换为.NET刻度?

  •  0
  • alansiqueira27  · 技术社区  · 6 年前

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

    如何更新数据库中已存在的时间(7)列,以便现在使用SQL以时间为单位表示时间?

    例如,如果数据库中有一列 储存起来,就像 2384623897129873个 作为一个大人物。我想知道如何转换。

    2 回复  |  直到 6 年前
        1
  •  1
  •   slugster Joey Cai    6 年前

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

    当你将时间保持在一个非24小时的周期中时,确保你仍然保留一个带有刻度偏移的日期-否则你将不知道 900,000,000,000

        2
  •  1
  •   alansiqueira27    6 年前

    找到了答案。

    正如这份文件所说:

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

    一毫秒内有一万个滴答声

    所以我把时间(7)转换成毫秒,然后乘以10.000:

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