[Memo] C# 和 SQL Server 的 TimeStamp 處理

  • 3117
  • 0

[Memo] C# 和 SQL Server 的 TimeStamp 處理

 

以前都是用 SSIS 和 SQL 語法搞定的,轉 C# 之後花了很多時間 Debug 。原因就是因為明明知道資料庫中是用 Binary 的方式處理但卻偷懶隨便 Google 找程式碼來套,浪費了很多時間。

 

都改了三版還是發現錯誤 ( 三次都用 Google 找 ) ,總之就是自已偷懶自找的。

 

因為上次用 TimeStamp 是快 8 年前的事,只依稀記得 SQL Server 的 timestamp 是序列的數字。但 google 後每個都說是「時間」,不然就是說長度太長的要縮減什麼的。

 

最後,還是乖乖的自已驗證 Binary 的格式

 

SQL Server 中取到的 TimeStamp Binary 內容 「00 00 00 00 00 00 0B B9」的陣列放到變數中,還好以前是專門寫金手指的作者所以知道有些的內容會倒著放,所以相反的資料也依序放入進行驗證。

image

 

然後直接將陣列用 BitConverter.ToInt64 處理並輸出看結果

image

原本的資料格式出來的都是 負很大的數字,而只有倒著放才是正確出現的數字內容。

因此,只要陣列先做了反轉之後再用 BitConverter 轉 long 就可以了。

不需要做任何的長度變更、也不需要做時分秒的數字相加,更不用做 Ulong 的設定。

 

範例程式

https://msdn.microsoft.com/zh-tw/library/system.bitconverter.toint64(v=vs.110).aspx

 

 

總結,明明自已驗證一下只要花 10 分鐘就搞定的事情,卻繞了一大圈才真正修好。 還是記錄一下警惕自已