乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      c#和SQL Server中的DateTimeOffset分辨率

       印度阿三17 2019-06-24

      Docs聲明,在.NET和SQL服務(wù)器中,分辨率為100ns.

      DateTimeOffset值的時間分量以100納秒單位稱為刻度 – C#
      準(zhǔn)確度 – 100納秒 – SQL Server

      然而SQL似乎丟掉了最后一位數(shù)(例如我正試圖保存2013-08-15 09:19:07.2459675 -04:00,SQL保存2013-08-15 09:19:07.2459670 -04:00 – 通知最后一位數(shù)改變了.)

      這發(fā)生在同一臺機器上,因此它不依賴于硬件.

      并不是說我實際上需要這個解決方案,但它使日期更難比較……我只是好奇.

      解決方法:

      我會說問題是你的…一個小代碼顯示:

      namespace Test
      {
          using System;
          using System.Data;
          using System.Data.SqlClient;
          using System.Globalization;
      
          /// <summary>
          /// 
          /// </summary>
          public class Program
          {
              /// <summary>
              /// 
              /// </summary>
              public static void Main()
              {
                  // Change the connection string to specify your server. 
                  // Probably you won't need an initial catalog because this
                  // program uses a temp table
                  string connStr = "Integrated Security=True";
      
                  // The temp table is called #Temp . It will cease to exist at the end 
                  // of the program automatically
                  // Two columns, DateTimeOffset and ShortDateTimeOffset
                  string query = @"CREATE TABLE #Temp (DateTimeOffset datetimeoffset(7) NOT NULL, ShortDateTimeOffset datetimeoffset(6) NOT NULL);INSERT INTO #Temp VALUES (@DT1, @DT2);SELECT * FROM #Temp";
      
                  using (var connection = new SqlConnection(connStr))
                  using (var command = new SqlCommand(query, connection))
                  {
                      const string dtString = "2013-08-15 09:19:07.2459675 -04:00";
                      const string dtFormat = "yyyy-MM-dd HH:mm:ss.fffffff zzz";
      
                      DateTimeOffset dt = DateTimeOffset.Parse(dtString, CultureInfo.InvariantCulture);
      
                      string dtString2 = dt.ToString(dtFormat, CultureInfo.InvariantCulture);
      
                      Console.WriteLine("Sending          : {0}", dtString2);
      
                      // Just to be sure!
                      if (dtString != dtString2)
                      {
                          throw new Exception("Problem in conversion");
                      }
      
                      command.Parameters.Add("@DT1", SqlDbType.DateTimeOffset).Value = dt;
                      command.Parameters.Add("@DT2", SqlDbType.DateTimeOffset).Value = dt;
      
                      try
                      {
                          connection.Open();
      
                          using (SqlDataReader reader = command.ExecuteReader())
                          {
                              if (reader.Read())
                              {
                                  DateTimeOffset dtRec1 = (DateTimeOffset)reader[0];
                                  DateTimeOffset dtRec2 = (DateTimeOffset)reader[1];
      
                                  string dtRecString1 = dtRec1.ToString(dtFormat, CultureInfo.InvariantCulture);
                                  string dtRecString2 = dtRec2.ToString(dtFormat, CultureInfo.InvariantCulture);
      
                                  Console.WriteLine("Receiving (long) : {0}", dtRecString1);
                                  Console.WriteLine("Receiving (short): {0}", dtRecString2);
      
                                  if (dtRec1 != dt)
                                  {
                                      throw new Exception("Difference between DateTimeOffset(.NET) and DateTimeOffset(sql)");
                                  }
      
                                  if (Math.Abs(dtRec2.Ticks - dt.Ticks) > 10)
                                  {
                                      throw new Exception("Too much difference between DateTimeOffset(.NET) and DateTimeOffset(6)(sql)");
                                  }
      
                                  if (reader.Read())
                                  {
                                      throw new Exception("Too many rows");
                                  }
                              }
                              else
                              {
                                  throw new Exception("No rows");
                              }
                          }
                      }
                      catch (Exception ex)
                      {
                          Console.WriteLine(ex.Message);
                      }
                  }
              }
          }
      }


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多