`
cheeruplc
  • 浏览: 111800 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

数据库自定义方法及在Sql语句中调用

阅读更多
由于 在我使用的数据表中 lasttime字段 在写入数据表时写入字符串‘20120401145112827’类型 在业务中需要对其字段时间做处理  以下过程是使用数据库自定义方法 简化Sql语句
--Sql中自定义方法
create function StrToDateTime(@DateStr as varchar(18))
returns varchar(24) --注意 returns 不是 return 
as
begin
	declare @date varchar(24);
	set @date=@DateStr;
	set @date=(SUBSTRING(cast (@date as varchar(18)),1,4)+'-'+SUBSTRING(cast (@date as varchar(18)),5,2) +'-'+SUBSTRING(cast (@date as varchar(18)),7,2)
		   +' '+SUBSTRING(cast (@date as varchar(18)),9,2)
		   +':'+SUBSTRING(cast (@date as varchar(18)),11,2)
		   +':'+SUBSTRING(cast (@date as varchar(18)),13,2));
	return @date;
end

以下为执行方法 打印结果为 2012-04-01 14:51:12
declare @returntime varchar(24)
exec @returntime=StrToDateTime '20120401145112827'
print convert(varchar(24),convert(datetime,@returntime),20)


以下代码为初始的Sql语句  未使用自定义方法
select * from (
select id,interID,cpid,intername,reply,lasttime,CASE lasttime
         WHEN '0' THEN getdate()-3
	     Else cast((SUBSTRING(cast (lasttime as varchar(18)),1,4)
+'-'+SUBSTRING(cast (lasttime as varchar(18)),5,2)
+'-'+SUBSTRING(cast (lasttime as varchar(18)),7,2)
+' '+SUBSTRING(cast (lasttime as varchar(18)),9,2)
+':'+SUBSTRING(cast (lasttime as varchar(18)),11,2)
+':'+SUBSTRING(cast (lasttime as varchar(18)),13,2)
) as varchar(24))
         end  as ldate,setTime  from xsreuserinter 
) as temp
 where (datediff(hh,temp.ldate,getdate())>72 and datediff(hh,temp.setTime,getdate())>72) order by lasttime desc

o(∩_∩)o 哈哈 以下为调用该方法之后的Sql语句 
--Notice: 调用该方法时 一定要加前缀dbo. 否则 报错“该内置方法不识别” 该方法在哪个数据库下执行 只属于哪个数据库 跨数据库无效
--调用方法为 select dbo.StrToDateTime(lasttime)
select * from (
select id,interID,cpid,intername,reply,lasttime,CASE lasttime
         WHEN '0' THEN getdate()-3
	     Else convert(datetime,dbo.StrToDateTime(lasttime),20) --该处调用function
         end  as ldate,setTime  from xsreuserinter 
) as temp
 where (datediff(hh,temp.ldate,getdate())>72 and datediff(hh,temp.setTime,getdate())>72) order by lasttime desc


在此区别一下 function 和 procedure
procedure为独立存储过程,使用EXEC命令,而自定义函数可以在一个SQL语句内调用,也可使用exec命令调用。

数据库自定义方法可以简化sql语句 并且可以多次重复利用 :-)  以前都没用过 开心 顶一个!
分享到:
评论

相关推荐

    sql server 自定义函数

    用户自定义函数可以在企业管理器中创建,也可以使用CREATE FUNCTION 语句创建。在创建时需要注意:函数名在数据库中必须唯一,其可以有参数,也可以没有参数,其参数只能是输入参数,最多可以有1024参数。 标量函数...

    数据库操作语句大全(sql)

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' +...

    经典SQL语句大全

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + ...

    sqlserver自定义函数

    打开测试数据库test,并以表w01为例,将下面的SQL语句放入sql2000查询分析器中,一段一段执行即可看到效果 ---在sql2000下创建测试数据表 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo]....

    C#调用SQL语句时乘号的用法

    一般来说,在ADO中,我们需要在SQL语句中使用乘法运算,可是添加’*’以后执行程序总是会出错,这是因为‘*’与sql中的‘*’关键字重合了,因此编译就会出错。 解决办法为:将乘法运算放到sql语句外面,将结果放入一...

    SQL Function 自定义函数详解

    1. 能够在select等SQL语句中直接使用自定义函数,存储过程不行。 2. 自定义函数可以调用其他函数,也可以调用自己(递归) 3. 可以在表列和 CHECK 约束中使用自定义函数来实现特殊列或约束 4. 自定义函数不能有...

    Oracle存储过程和自定义函数详解

    PL/SQL中的过程和函数(通常称为子程序)是PL/SQL块的一种特殊的类型,这种类型的子程序可以以编译的形式存放在数据库中,并为后续的程序块调用。 相同点: 完成特定功能的程序 不同点:是否用return语句返回值。 ...

    SQL Server存储过程的基本概念以及语法

    存储过程是SQL语句和可选控制流语句的预编译集合,存储在数据库中,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。 在SQL Server中存储过程分为两类:即系统提供的存储...

    sql经典语句一部分

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + ...

    精通SQL--结构化查询语言详解

    15.3.3 使用execute语句调用存储过程 310 15.3.4 使用create function创建函数 312 15.3.5 使用enterprise manager创建存储过程和函数 315 15.3.6 修改和删除存储过程和函数 317 15.4 oracle中的流控制语句 319 ...

    SQL2000存储过程的基础

    存储过程是SQL语句和可选控制流语句的预编译集合,存储在数据库中,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。 在SQL Server中存储过程分为两类:即系统提供的存储...

    sql试 题答案和试题

    4、关系数据库中,主键是(1___),主键的建立有(2___)种方法,当运用Transact-SQL语句创建主键时,可以是(3___)。 ⑴ A、为标识表中唯一的实体 B、创建唯一的索引,答应空值 C、只答应以表中第一字段建立 ...

    迷你版SQL2000服务器

    ^计划任务中执行SQL语句变更为执行SQL脚本文件,支持GO分隔,方便执行复杂任务。 1.1.7 +配置文件中增加AppTitle字符串项,如果有输入内容,则在启动时会以该项的值为窗口标题;繁体用户请将配置文件保存为Unicode...

    精通SQL 结构化查询语言详解

    15.3.3 使用EXECUTE语句调用存储过程  15.3.4 使用CREATE FUNCTION创建函数  15.3.5 使用Enterprise Manager创建存储过程和函数 15.3.6 修改和删除存储过程和函数  15.4 Oracle中的流控制语句  15.4.1 ...

    EasyASP v2.1数据库操作类

    [数据库] 自带记录集分页和调用存储过程分页功能,拥有功能丰富的可完全自定义配置及调用。 [数据库] 能方便的执行带各种参数的MSSQL存储过程并返回多个值或多个记录集。 [数据库] 完善的数据库操作容错功能,能...

    SYBASE IQ存储过程学习笔记

    存储过程将过程化的SQL语句存储在数据库中,供所有程序使用。存储过程中可以包含控制语句,如LOOP循环语句、IF和CASE这样的条件语句。存储过程通过CALL语句进行调用,使用变量传入参数和返回结果。可以返回结果集,也...

    数据库课程设计--图书管理系统.doc

    分析关系模式中的依赖关系,对关系模式规范化处理 4、完成系统物理结构设计 为每个关系分配存储长度,建立数据库的索引和视图,定义关系中的主码和外码,写 出关系创建和查询的SQL语句。 5、编码 选择你自己熟悉的...

    SQL Server创建存储过程、触发器、函数等(学习札记)

     存储过程是事先经过编译并保存在数据库中的一段sql语句集合. 使用时调用即可. 例: 返回学号为”2020005″学生的成绩情况,存储过程命名为p1 -- 如果不使用存储过程的查询 select * from sc where

    《数据库系统及应用》作业.pdf

    执行如下命令(假如该例中数据库 的名字为 GHL) : SELECT * FROM GHL.[dbo].Find_Leader('赵六') - 2 - 将会在"结果"窗口中显示如下的输出: leaderlevel leadername 1 1 李四 2 2 张三 要求函数调用的例子中实参...

    MySQL工具包

    * 调用此方法,需要自定义一个类实现RowMapper接口,该接口返回泛型,该泛型为该方法返回值集合的泛型 * @param sql * :SQL语句,参数用"?"表示 * @param rm * :rm为RowMapper接口的实现类所产生的对象 ...

Global site tag (gtag.js) - Google Analytics