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

本文关键字:net 转换 DateTime SqlDateTime | 更新日期: 2023-09-27 17:49:52

到处都找不到

目前的方法是DateTime dt = (DateTime)sqlparam.Value;。我可以想象在不同的配置下会出错,不同的SQL区域设置,不同的PC区域设置等等。但是,再一次,解析SQL datetime字符串的值是更疯狂的想法。

是否有一个可行的解决方案,它是。net,应该有一个,对吗?

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

SqlDateTime类有一个属性Value,它已经是DateTime类型。为什么有必要进行转换?直接使用Value

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

我不知道显式强制转换有什么问题,我就是这么做的。

如果你的问题是由"不同的配置,不同的SQL区域设置,不同的PC区域设置"引起的,那么使用不同的转换方法是没有用的。

然而,你可能想看看SQL Server 2008中的这个新的数据类型:DateTimeOffset

将其强制转换为DateTime。如果它是可空的,将其转换为nullable,也可以写成"DateTime?"。

DateTime? value = (DateTime?)resultSet["myDateColumn"];
查看SqlDateTime类

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

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

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