如何将SqlDateTime值转换为.Net :: DateTime

时间:2011-04-13 13:16:44

标签: c# sql datetime

到处搜寻,不去。

到目前为止的方法是DateTime dt = (DateTime)sqlparam.Value;。我可以想象在不同的​​配置,不同的SQL区域设置,不同的PC区域设置等方面会出错。但话说回来,解析SQL日期时间字符串的值是更疯狂的想法。

有没有一个可行的解决方案,它是.NET,应该有一个,对吧?

5 个答案:

答案 0 :(得分:14)

SqlDateTime类的属性Value已经是DateTime类型。为什么要进行任何转换?只需直接使用Value

答案 1 :(得分:5)

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);
    }
}

答案 2 :(得分:4)

我没有看到明确地施展它有什么问题,我就是这样做的。

如果您的问题是由“不同的配置,不同的SQL区域设置,不同的PC区域设置”引起的,那么使用不同的转换方法将无济于事。

但是,您可能希望在SQL Server 2008中查看此新数据类型: DateTimeOffset

答案 3 :(得分:2)

将其转换为DateTime。  如果它可以为空,则将其强制转换为Nullable,也可以写为“DateTime?”。

DateTime? value = (DateTime?)resultSet["myDateColumn"];

查看SqlDateTime Class

它有一个Parse方法,你可以在转换成DateTime后将字符串解析为SqlDateTime

答案 4 :(得分:0)

尝试使用SqlDateTime.op_Explicit() [参考:http://msdn.microsoft.com/en-us/library/exzwfa5y%28v=VS.100%29.aspxhttp://msdn.microsoft.com/en-us/library/aa326475%28v=vs.71%29.aspx 此外,

试试这个DateTime orderDate = Convert.ToDateTime(sqlparam.Value.ToString());