【问题标题】:Using SQL function with datatable results对数据表结果使用 SQL 函数
【发布时间】:2012-02-12 19:13:03
【问题描述】:

我有一个包含 DATETIME 列的数据库表。我想要做的是确定记录的日期部分是否与今天的日期部分相同。但是,我有一个数据表对象,无法将 daUsage.Select 与 SQL 函数 DATEPART 一起使用。

所以我要问的是是否有一种方法可以在不使用 select 函数的情况下从数据表中过滤结果。如果这是可能的,它是如何完成的?我可以使用 LINQ,但我对它很陌生,我觉得必须有更好的方法来做到这一点。

谢谢

【问题讨论】:

  • 显示一些代码,这比阅读所有文本更容易理解!
  • 如何填充数据表?在某些时候,这必须来自SELECT 查询,您可以在其中应用过滤器或添加额外的列之前数据表曾经看到它。如果您只是指着一张桌子,也许您可​​以指着一个视图。

标签: c# datatable


【解决方案1】:

您可以使用DataTable.Select检查您的日期是否在今天0点到第二天0点之间:

string selectString = String.Format("DateColumn >= '{0}' AND DateColumn < '{1}'",
                      DateTime.Today.ToString(DateTimeFormatInfo.InvariantInfo), 
                      DateTime.Today.AddDays(1).ToString(DateTimeFormatInfo.InvariantInfo));
bool hasTodayRecords = dt.Select(selectString).Length > 0;

通过这种方式,您只能获得今天的记录。

在 LINQ 中,您可以将 DateTime.DateDateTime.Today 进行比较:

bool hasTodayRecords = dt.AsEnumerable().
     Any(r => DateTime.Today.Equals(((DateTime)r["DateColumn"]).Date));

【讨论】:

  • 感谢您的帮助...这似乎是我正在寻找的。不应该是 DateColumn
  • @Andreas:我已经编辑过了。但是使用&lt;=,您将只包含精确到第二天 0'clock 的记录。
猜你喜欢
  • 2011-10-17
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多