带有日期的c#datatable select语句

时间:2012-06-07 15:11:42

标签: c# datetime select datatable

我正在尝试在数据表上创建一个select语句,以获取我正在寻找的日期范围内的行。我是新手,我不太明白这个选择语句是如何工作的。我试着写这个但是没有用。你能帮我一把吗?我被困了

foundRows = dt.Select("DATE1 <= '" + date1+ "' AND DATE2 >= '" + date1+ '"');

5 个答案:

答案 0 :(得分:10)

这是我测试过的最佳最佳搜索标准。 你必须约会。

From_Date = 12/01/2012 To_Date = 12/31/2012

以及您在其上申请的DataTable中的列。 (在我的代码'日期')

您的Select Statement将是这样的。

  DataRow[] rows = newTable.Select("date >= #" + from_date + "# AND date <= #" + to_date + "#");

答案 1 :(得分:8)

除了用#包装日期之外,如果date1是DateTime而不是字符串,则需要使用ToString(您的日期格式)来获取正确的sql语句。对于调试,如果首先创建包含过滤器的字符串,则使其更容易,然后使用该字符串进行选择。然后,您可以查看字符串并在查询构建器中使用它来验证您的sql。

答案 2 :(得分:0)

在SSIS脚本组件中使用它。我刚刚使用了上面的例子,其中包括日期周围的“#”。我也将每个转换为字符串。这非常有效。

万一你想知道我如何在SSIS中设置它: 首先使用记录集目的地的数据流和一个Object变量来存储记录集。

在我的脚本中,我将变量包含为只读。

在主班......

public class ScriptMain : UserComponent
{

OleDbDataAdapter a = new OleDbDataAdapter();
System.Data.DataTable AwardedVacTable = new System.Data.DataTable();
...
...

然后在Pre-Execute中......

public override void PreExecute()
{
    base.PreExecute();

    a.Fill(AwardedVacTable, Variables.rsAwardedVac);
...
...

然后在自定义方法中访问数据表...

String dtFilter = "EmployeeID = " + empId.ToString() + " AND (#" + Convert.ToString(StartDate) "# <= EndDate AND #" + Convert.ToString(StartDate) + "# >= StartDate" + " OR #" + Convert.ToString(StartDate.AddDays((double)numDays)) + "# >= StartDate AND #" + Convert.ToString(StartDate.AddDays((double)numDays)) + "# <= EndDate)";

DataRow[] Overlaps = AwardedVacTable.Select(dtFilter);

答案 3 :(得分:0)

表达式=&#34;日期&gt; #2015年1月1日#&#34 ;; DataRow [] foundRows = table.Select(expression); 与 select * from tablename where Date&gt;&#39; 2015-1-1&#39;

答案 4 :(得分:0)

我在这篇文章上发布了答案。

DataTable Select by exact DateTime

您可以使用类似的方法,通过使用刻度线来选择范围。