在DateTime上执行DataTable.Select避免DateTime - 多个国家/地区的字符串不匹配?

时间:2015-05-17 02:41:00

标签: c# .net datetime datatable

C#.Net 1.1的问题。

如何使用DateTime比较对DataTable执行选择操作,并且仍然避免System.DateTime - System.String不匹配,同时使此比较适用于其他国家/地区的日期格式。

string strSel = String.Format("LAST_QUEUED > '{0}'", DateTime.Now);
DataRow[] drArr = DataSetX.TableX.Select(strSel);

LAST_QUEUED起源于美国的Oracle DateTime字段,读入DateTime类型的等效类型DataSet表字段。以上选择在西班牙完成。

在.Net 1.1中,我使用'{0}'和.Net 4.0#{0}#。但是,当我们在西班牙运行.Net 1.1版本时,我收到一个错误,“无法对System.DateTime和System.String执行>操作。”(有意义)。如果我仍然使用.Net 1.1转换为#{0} #formaterter,那么我得到“字符串未被识别为有效的DateTime”,因此格式化程序可能在版本之间发生了变化。

2 个答案:

答案 0 :(得分:0)

更改

String.Format("LAST_QUEUED > '{0}'", DateTime.Now);

String.Format("LAST_QUEUED > '{0}'", " ' " 
+DateTime.Now.ToString("dd/MM/yyyy")+ " '";

答案 1 :(得分:0)

我最终选择的解决方案是在System.Globalization命名空间中使用CultureInfo.InvariantCulture.DateTimeFormat格式化程序。

string strSel = String.Format(CultureInfo.InvariantCulture.DateTimeFormat,    "LAST_QUEUED > '{0}'", DateTime.Now);
DataRow[] drArr = DataSetX.TableX.Select(strSel);

请参阅:https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.invariantculture%28v=vs.110%29.aspx