到处都找不到
目前的方法是DateTime dt = (DateTime)sqlparam.Value;
。我可以想象在不同的配置下会出错,不同的SQL区域设置,不同的PC区域设置等等。但是,再一次,解析SQL datetime字符串的值是更疯狂的想法。
是否有一个可行的解决方案,它是。net,应该有一个,对吗?
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());