嘗試搜索無處不在,不去。如何將SqlDateTime值轉換爲.Net :: DateTime
到目前爲止的方法是DateTime dt = (DateTime)sqlparam.Value;
。我可以想象,在不同的配置,不同的SQL區域設置,不同的PC區域設置等方面可能會出錯。但是,再次,解析SQL datetime字符串的值是更瘋狂的想法。
是否有工作的解決方案,這是.NET,應該有一個,對吧?
嘗試搜索無處不在,不去。如何將SqlDateTime值轉換爲.Net :: DateTime
到目前爲止的方法是DateTime dt = (DateTime)sqlparam.Value;
。我可以想象,在不同的配置,不同的SQL區域設置,不同的PC區域設置等方面可能會出錯。但是,再次,解析SQL datetime字符串的值是更瘋狂的想法。
是否有工作的解決方案,這是.NET,應該有一個,對吧?
我不明白明確鑄造它有什麼問題,那就是我該怎麼做。
如果您的問題是由「不同的配置,不同的SQL區域設置,不同的PC區域設置」引起的,那麼使用不同的轉換方法將無濟於事。
然而,你可能想看看這個新的數據類型在SQL Server 2008: DateTimeOffset
它似乎工作,我希望它是好的,雖然我不確定,因爲.NET是遠離金屬的方式,不知道它在底下做了什麼。 – Coder 2011-04-14 09:45:23
using System;
class Program
{
static void Main()
{
// Taken from MySQL: SELECT CURTIME()
// SELECT TIME(...)
string mySqlTime = "23:50:26";
DateTime time = DateTime.Parse(mySqlTime);
// Taken from MySQL: SELECT TIMESTAMP(...)
string mySqlTimestamp = "2003-12-31 00:00:00";
time = DateTime.Parse(mySqlTimestamp);
Console.WriteLine(time);
// Taken from MySQL: SELECT CURDATE()
// SELECT DATE(...)
string mySqlDate = "2008-06-13";
time = DateTime.Parse(mySqlDate);
Console.WriteLine(time);
}
}
日期2008-20-10 == 2008-10-20 == 10-20-2008 == 20-10-2008 ==等這似乎是問題,特別是如果我必須部署應用程序具有不同區域選項的電腦。 – Coder 2011-04-13 13:31:54
它只是轉換爲日期時間。 如果它可以爲空,則將其轉換爲Nullable,也可以寫爲「DateTime?」。
DateTime? value = (DateTime?)resultSet["myDateColumn"];
它有一個解析方法,您可以施放後,解析你串入SQLDATETIME到的DateTime
嘗試使用SqlDateTime.op_Explicit()
[參考:http://msdn.microsoft.com/en-us/library/exzwfa5y%28v=VS.100%29.aspx和http://msdn.microsoft.com/en-us/library/aa326475%28v=vs.71%29.aspx 此外,
試試這個DateTime orderDate = Convert.ToDateTime(sqlparam.Value.ToString());
SqlDateTime
班有一個屬性Value
它已經是DateTime
類型。爲什麼需要進行任何轉換?直接使用Value
即可。
但參數是'SqlParameter(「@param」,System.Data.SqlDbType.DateTime);''不'SqlDateTime' – Coder 2011-04-13 13:42:05
是的,二進制表示是一個DATETIME,我不認爲它與Net :: DateTime二進制兼容,調試器顯示一些奇怪的時間字符串,我不確定內部轉換是否正確完成,而不是通過一些DateTime :: TryParse((sqlparam as object).ToString()); – Coder 2011-04-13 14:05:00