1、使用tostring获取当天数据

            var list = ssc.Queryable<Student>().Where(o => o.CreateTime.Value.ToString("yyyy-MM-dd") == DateTime.Today.ToString("yyyy-MM-dd")).ToList();
var sql = ssc.Queryable<Student>().Where(o => o.CreateTime.Value.ToString("yyyy-MM-dd") == DateTime.Today.ToString("yyyy-MM-dd")).ToSqlString();

看结果也是能查询到数据但是生成的sql语句为

SELECT [Id],[Name],[Version],[SchoolId],[Grade],[Age],[CreateTime],[Type],[IsDelete] FROM [Student]  WHERE (DateName(Year,[CreateTime])+'-'+DateName(Month,[CreateTime])+'-'+DateName(Day,[CreateTime]) =DateName(Year,'2020/10/11 0:00:00')+'-'+DateName(Month,'2020/10/11 0:00:00')+'-'+DateName(Day,'2020/10/11 0:00:00'))

和实际需求还是有点差异。

2、使用sugar内置函数获取当天数据

            var list1 = ssc.Queryable<Student>().Where(o=>SqlFunc.DateIsSame(o.CreateTime,DateTime.Today)).ToList();
var sql1 = ssc.Queryable<Student>().Where(o => SqlFunc.DateIsSame(o.CreateTime, DateTime.Today)).ToSqlString();

生成的sql语句为

SELECT [Id],[Name],[Version],[SchoolId],[Grade],[Age],[CreateTime],[Type],[IsDelete] FROM [Student]  WHERE  (DATEDIFF(day,[CreateTime],'2020/10/11 0:00:00')=0)

3、自定义扩展函数获取当天数据

添加静态扩展方法

public static DateTime ToDate111<T>(this T str)
{
throw new NotSupportedException("Can only be used in expressions");
}

添加扩展方法,解析为语句的时候注意一下,字段名称和值

            expMethods.Add(new SqlFuncExternal()
{
UniqueMethodName = "ToDate111",
MethodValue = (expInfo, dbType, expContext) =>
{
if (dbType == DbType.SqlServer)
if (expInfo.Args.Count == 0)
{
return string.Format(" getdate() ");
}
else
{
return string.Format(" cast (CONVERT (varchar ( 100), {0} , 111) as date) ", expInfo.Args[0].MemberName);
}
if (dbType == DbType.MySql)
if (expInfo.Args.Count == 0)
{
return string.Format(" getdate() ");
}
else
{
return string.Format(" date_format( {0}, '%Y/%m/%d' ) ", expInfo.Args[0].MemberName);
}
else
throw new Exception("未实现");
}
});

生成的sql语句为

SELECT [Id],[Name],[Version],[SchoolId],[Grade],[Age],[CreateTime],[Type],[IsDelete] FROM [Student]  WHERE (cast (CONVERT (varchar ( 100), [CreateTime] , 111) as date) = '2020/10/11 0:00:00' )

4、自行扩展ToString("yyyy-MM-dd")功能

Demo地址:https://gitee.com/xuanyun2018/sqlsugardemo.git

下一章节修改源码看是否能支持原生ToString("yyyy-MM-dd")解析功能。

sqlsugar入门(2)-C#方法与sugar自定义函数的区别的更多相关文章

  1. MySQL存储过程/存储过程与自定义函数的区别

    语法: 创建存储过程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parame ...

  2. (转)MySQL存储过程/存储过程与自定义函数的区别

    转自:http://www.cnblogs.com/caoruiy/p/4486249.html 语法: 创建存储过程: CREATE [definer = {user|current_user}]  ...

  3. 【存储过程】MySQL存储过程/存储过程与自定义函数的区别

    ---------------------------存储过程-------------------- 语法: 创建存储过程: CREATE [definer = {user|current_user ...

  4. SQL中存储过程和自定义函数的区别

    存储过程:     存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在 ...

  5. SQL中存储过程和自定义函数的区别(转载)

    存储过程:     存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在 ...

  6. C++入门经典-例5.7-调用自定义函数交换两变量值,传入指针

    1:代码如下: // 5.7.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  7. Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数

    10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...

  8. 基本开题的感觉是了-MySQL继续继续(自定义函数&存储过程)

    hi 感觉论文开题基本确定了,凯森 1.MySQL -----自定义函数----- ----基本 两个必要条件:参数和返回值(两者没有必然联系,参数不一定有,返回一定有) 函数体:合法的SQL语句:以 ...

  9. sqlserver中自定义函数+存储过程实现批量删除

    由于项目的需要,很多模块都要实现批量删除的功能.为了方便模块的调用,把批量删除方法写成自定义函数.直接上代码. 自定义函数: ALTER FUNCTION [dbo].[func_SplitById] ...

随机推荐

  1. Python新手入门基础

    认识 Python 人生苦短,我用 Python -- Life is short, you need Python 目标 Python 的起源 为什么要用 Python? Python 的特点 Py ...

  2. redis过期策略以及内存淘汰机制(理论+配置)

    一.redis的过期策略: redis的过期策略是:定期删除+惰性删除redis在存储数据时,可能会设置过期时间,而所谓的定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的k ...

  3. Python练习题 010:分解质因数

    [Python练习题 010]将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. -------------------------------------------------- ...

  4. arduino 动态内存不足问题

    亲测有用, 参考:https://blog.csdn.net/weixin_33915554/article/details/86975847 如果在代码中使用到一个数组,但是数组容量超过20000个 ...

  5. 【题解】[USACO09NOV]A Coin Game S

    Link \(\text{Solution:}\) 菜鸡自己想出来了状态设计,但是没有实现出来--菜死了 设\(dp[i][j]\)表示该选第\(i\)个,最多选\(j\)个的最优解.注意这里的定义仅 ...

  6. Jmeter之『JSR223脚本』

    Json处理(通过JS) 对于Json字符串,需要使用单引号『''』(因为Json中已存在双引号) // String转为Object var jsonObj = JSON.parse('${data ...

  7. 实验 6:OpenDaylight 实验——OpenDaylight 及 Postman 实现流表下发

    一.实验目的 熟悉 Postman 的使用:熟悉如何使用 OpenDaylight 通过 Postman 下发流表. 二.实验任务 流表有软超时和硬超时的概念,分别对应流表中的 idle_timeou ...

  8. 多测师讲解自动化selenium___定位元素002___高级讲师肖sir

    高级自动化测试python+selenium教程手册 --高级讲师肖sir(Harm) 第 2 章8种定位方法 总结: selenium 的 webdriver 提供了八种基本的元素定位方法,前面六种 ...

  9. jvm堆内存和GC简介

    最近经常遇到jvm内存问题,觉得还是有必要整理下jvm内存的相关逻辑,这里只描述jvm堆内存,对外内存暂不阐述. jvm内存简图 jvm内存分为堆内存和非堆内存,堆内存分为年轻代.老年代,非堆内存里只 ...

  10. day39 Pyhton 并发编程02 后

    一.开启子进程的另一种方式 import os from multiprocessing import Process class MyProcess(Process): def __init__(s ...