Вы пытаетесь преобразовать bigint в SQL Server в дату и время в C # ?Если это так, вы должны сделать что-то вроде:
var tickValue = 129471410567460000;
var datetime = new DateTime( tickValue );
Если, однако, вы пытаетесь преобразовать значение bigint в SQL Server в значение datetime в SQL Server, тогда посмотрите следующую ссылку:
Преобразование .NET-тиков в SQL Server DateTime
Если вы пытаетесь имитировать точную логику (как вы получаете это значение тика, это его собственная загадка):
var tickValue = 129471410567460000;
var ms = ( tickValue / 10000 ) % 86400000;
var day = tickValue / 864000000000 - 109207;
var startDate = new DateTime( 1900, 1, 1 );
var resultDateTime = startDate.AddMilliseconds( ms ).AddDays( day );
Хитрость в этой логике - дата начала.В SQL Server день ноль = '1900-01-01', хотя значения DateTime могут хранить значения начиная с 1753 года.
В комментариях вы упомянули, что метод SQL был опубликован на форуме.Очень важно, чтобы вы знали метод, используемый для вычисления значения bigint.Форум, похоже, предполагает, что это значение является структурой Win32 FILETIME: она хранит дату в виде интервалов 100 наносекунд с 1601 .Если это так, то код, который вы будете использовать в C #:
var startDate = new DateTime( 1601, 1, 1 );
var resultDateTime = startDate.AddTicks( tickValue );
Вы заметите, что это значение возвращает 2003-05-14 4:51:56 PM
, что является приблизительной датой и временем ветки форума.