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

C# 如何将时间(7)转换为.NET刻度?,c#,sql-server,C#,Sql Server,我有一个表,其中有一些时间(7)类型的列 我现在需要将这些列从时间(7)转换为BIGINT(从.NET),因为mssql不支持超过24小时的时间 如何使用SQL更新数据库中已经存在的时间(7)列,使其现在以滴答为单位表示时间 例如,如果我在数据库中存储了一列“07:00”,那将类似于2384623897129873作为BIGINT。我想知道如何进行转换。根据日期时间中的刻度数,时间从特定的起点开始-0001年1月1日。这意味着,如果要将刻度作为偏移量存储到任意长度的一天中,则需要从DateTim

我有一个表,其中有一些时间(7)类型的列

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

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

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

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

当你在一个不是24小时的周期中保存时间时,请确保你仍然保留一个带有刻度偏移的日期-否则你将不知道
90000000000
是从第1天偏移25小时还是从第2天偏移1小时。

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

当你将时间保持在一个不是24小时的周期中时,确保你仍然保持一个带有刻度偏移的日期-否则你将不知道
90000000000
是从第1天偏移25小时还是从第2天偏移1小时。

找到了答案

正如这份文件所说:

一毫秒内有10000个滴答声

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

SELECT CONVERT(BIGINT, DATEDIFF(MILLISECOND, 0, MyCurrentDuration)) * 10000 as Ticks from CalculationResult
找到了答案

正如这份文件所说:

一毫秒内有10000个滴答声

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

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

你说的“拉奴”是什么意思?。例如,如果我在数据库中有一个存储了“07:00”的列,那么作为BIGINT的值应该是2384623897129873。我想知道如何进行转换。误解了声明,抱歉。听起来你需要使用日期时间来代替。从一个时间中获取等于24小时以上的滴答数毫无意义。
2384623897129873
。您是如何做到这一点的?
对不起,这只是一个例子。
请用您想要的确切结果更新您的问题。没有这些,我们就无法比较或评估不同的答案。你说的@Larnu是什么意思?。例如,如果我在数据库中有一个存储了“07:00”的列,那么作为BIGINT的值应该是2384623897129873。我想知道如何进行转换。误解了声明,抱歉。听起来你需要使用日期时间来代替。从一个时间中获取等于24小时以上的滴答数毫无意义。
2384623897129873
。您是如何做到这一点的?
对不起,这只是一个例子。
请用您想要的确切结果更新您的问题。如果没有这一点,我们就无法比较或评估不同的答案。我猜你想要存储表示持续时间的值,并用c语言翻译成
TimeSpan
(它完全能够存储超过24小时的值)-但正如我在对问题的评论中所写,100ns是非常精确的,您可能只想存储秒数,并在c中使用静态方法创建
TimeSpan
的实例
FromSeconds()
-甚至可以使用分钟分辨率。。。只是一些值得思考的东西。我认为最好使用接受“滴答声”的构造函数。TimeSpan TimeSpan=new TimeSpan(782163872163)我猜您希望存储表示持续时间的值,并用c语言翻译成
TimeSpan
(它完全能够存储超过24小时的值)-但正如我在对问题的评论中所写,100ns是非常精确的,您可能只想存储秒数,并在c中使用静态方法创建
TimeSpan
的实例
FromSeconds()
-甚至可以使用分钟分辨率。。。只是一些值得思考的东西。我认为最好使用接受“滴答声”的构造函数。TimeSpan TimeSpan=新的TimeSpan(782163872163)