到处搜寻,不去。
到目前为止的方法是DateTime dt = (DateTime)sqlparam.Value;
。我可以想象在不同的配置,不同的SQL区域设置,不同的PC区域设置等方面会出错。但话说回来,解析SQL日期时间字符串的值是更疯狂的想法。
有没有一个可行的解决方案,它是.NET,应该有一个,对吧?
答案 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"];
它有一个Parse方法,你可以在转换成DateTime后将字符串解析为SqlDateTime
答案 4 :(得分:0)
尝试使用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());