2017-02-23 89 views
0

我試圖將DateTime變量轉換爲Timestamp。我的變量的當前格式爲:1/23/17 2:14:31 PM,我希望它是TimeStamp,因此我可以將其用於Oracle SQL Developer。例如:23-JAN-17 2.14.31.000000000 PM從DateTime轉換到TimeStamp

我試圖將其轉換是這樣的:

DateTime d = DateTime.Now.AddDays(-31); 
Console.WriteLine(d.ToUniversalTime().ToString("O")); 

但產量沒有像TimeStamp

2017-01-23T14:14:31.5838355Z 
+0

爲什麼不能爲SQL使用正則日期時間? – NicoRiff

+0

創建數據庫的人員使用該格式創建了TimeStamp列,我無法更改它。 –

+1

查看https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.80).aspx和https://msdn.microsoft.com/en-us/library/8kb3ddd4(v= vs.80).aspx,其中一個應該回答你的問題。您可能還想檢查管理連接的對象是否會自動爲您執行轉換。 – Chris

回答

2

試試這個:

DateTime d = DateTime.Now.AddDays(-31); 
long epoch = (d.Ticks - 621355968000000000)/10000000; 
Console.WriteLine(d.ToUniversalTime().ToString("dd-MMM-yy HH:mm:ss") + ":" + epoch); 
+0

從1970年開始,你的'epoch'似乎是一個「Unix」的第二個計數。___什麼是相關性?___如果需要,考慮使用'long epoch =((DateTimeOffset)d).ToUnixTimeSeconds();'這是更容易閱讀。 –

0

試試這個

DateTime d = DateTime.Now.AddDays(-31); 
Console.WriteLine(d.ToUniversalTime().ToString("hh-MMM-yy hh.mm.ss.ffffff tt")); 
+0

「PM」指示符的月份可能取決於文化,例如用「ES-ES」(西班牙語(西班牙語)),你可能會得到''23-ene.-17 02.14.31.000000000「'('Jan'是'ene.',而'PM'則不算什麼)。 –