实体SQL DateDiff函数

本文关键字:函数 DateDiff SQL 实体 | 更新日期: 2023-09-27 18:17:33

我使用
对实体ObjectSet类构建select and where条件ObjectQuery .

  ObjectQuery<DbDataRecord> query = context.TestEnt.Select("it.BuySell, "
                        + "it.DepoTerm").Where("Datediff(day,it.RunDateTime,'22-11-2012')=0" );
                var a = query.ToList();
                foreach (var tmp in a)
                {
                    Console.WriteLine(tmp["BuySell"].ToString());
                }

我想在我的where条件中使用datediff函数,

实体SQL DateDiff函数

试试这个:

var query = context.TestEnt
                   .Where("DiffDays(it.RunDateTime,'22-11-2012')=0" );
                   .Select("it.BuySell, it.DepoTerm")

这是可能的,你将不得不调用CreateDataTime在你的字符串传递的数据,使其工作。以下是ESQL中所有支持的日期函数列表。

你也可以使用链接到实体:

var query = context.TestEnt
                   .Where(x => SqlFunctions.DateDiff("day", x.RunDateTime,'22-11-2012') == 0)
                   .Select(x => new { x.BuySell, x.DepoTerm }); 

ESQL函数DiffDays确实可以工作,但是要正确使用它是很困难的。你必须将字符串转换为DateTime;但是,由于使用CreateQuery<>方法将文本转换为SQL,因此需要强制转换为System.DateTime,否则查询将在运行时失败。

试试这个:

ObjectQuery<DbDataRecord> query = context.TestEnt.Select("it.BuySell, it.DepoTerm")
    .Where("DiffDays(it.[RunDateTime],cast('22-11-2012' as System.DateTime))=0");
var a = query.ToList();
foreach (var tmp in a)
{
    Console.WriteLine(tmp["BuySell"].ToString());
}