sqlsugar入门(2)-C#方法与sugar自定义函数的区别
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自定义函数的区别的更多相关文章
- MySQL存储过程/存储过程与自定义函数的区别
语法: 创建存储过程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parame ...
- (转)MySQL存储过程/存储过程与自定义函数的区别
转自:http://www.cnblogs.com/caoruiy/p/4486249.html 语法: 创建存储过程: CREATE [definer = {user|current_user}] ...
- 【存储过程】MySQL存储过程/存储过程与自定义函数的区别
---------------------------存储过程-------------------- 语法: 创建存储过程: CREATE [definer = {user|current_user ...
- SQL中存储过程和自定义函数的区别
存储过程: 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在 ...
- SQL中存储过程和自定义函数的区别(转载)
存储过程: 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在 ...
- C++入门经典-例5.7-调用自定义函数交换两变量值,传入指针
1:代码如下: // 5.7.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...
- Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数
10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...
- 基本开题的感觉是了-MySQL继续继续(自定义函数&存储过程)
hi 感觉论文开题基本确定了,凯森 1.MySQL -----自定义函数----- ----基本 两个必要条件:参数和返回值(两者没有必然联系,参数不一定有,返回一定有) 函数体:合法的SQL语句:以 ...
- sqlserver中自定义函数+存储过程实现批量删除
由于项目的需要,很多模块都要实现批量删除的功能.为了方便模块的调用,把批量删除方法写成自定义函数.直接上代码. 自定义函数: ALTER FUNCTION [dbo].[func_SplitById] ...
随机推荐
- java安全编码指南之:敏感类的拷贝
目录 简介 一个简单的SensitiveObject SensitiveObject的限制 对SensitiveObject的攻击 解决办法 简介 一般来说class中如果包含了私有的或者敏感的数据的 ...
- 基于NPOI的Excel导入导出类库
概述 支持多sheet导入导出.导出字段过滤.特性配置导入验证,非空验证,唯一验证,错误标注等 用于基础配置和普通报表的导入导出,对于复杂需求,比如合并列,公式,导出图片等暂不支持 GitHub地址: ...
- Tomcat学习小记(一)
1.Tomcat概述 Tomcat 服务器是一个开源的轻量级Web应用服务器,擅长处理动态资源,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet.JSP 程序的首选. Tomcat ...
- Python numpy总结(3)——常用函数用法
1,np.ceil(x, y) 限制元素范围,进一法,即向上取整. x 表示输入的数据 y float类型 表示每个元素的上限. a = np.array([-1.7, -1.5, -0.2, 0. ...
- 玩命学JVM(二)—类加载机制
前言 Java程序运行图: 上一篇玩命学JVM(一)-认识JVM和字节码文件我们简单认识了 JVM 和字节码文件.那JVM是如何使用字节码文件的呢?从上图清晰地可以看到,JVM 通过类加载器完成了这一 ...
- IDEA文本编辑区的护眼绿豆沙色配置
第一步:打开IDEA -> File -> settings -> Editor -> Color Scheme -> General 第二步:找到右方Text -> ...
- P6810 「MCOI-02」Convex Hull 凸包
Link 一句话题意: 求出 \(\displaystyle\sum_{i=1}^{n}\sum_{j=1}^{m}\tau(i)\tau(j)\tau(gcd(i,j))\) 前置知识 \(diri ...
- 下载 node.js 步骤 bower npm 报错解决
1,下载node.js ,安装之后就可以 了 2,解决"npm不是内部或外部命令" ,打开安装的node.js 的文件夹 将这个地址,放在环境变量里面 <1,属性环境 ...
- SDN实验 3: Mininet 实验——测量路径的损耗率
验 3:Mininet 实验--测量路径的损耗率 一.实验目的 在实验 2 的基础上进一步熟悉 Mininet 自定义拓扑脚本,以及与损耗率相关的设定:初步了解 Mininet 安装时自带的 POX ...
- 多测师讲解自动化--rf断言(下)--_高级讲师肖sir
1.Page Should Contain 1.1存在页面上的内容 1.2 不存在页面上的内容, 运行抛异常 1.3 Page Should Not Contain 1.4 1.5 输入页面元素,判断 ...