`
floger
  • 浏览: 213272 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sql的大全代码(4)

阅读更多

工作日处理函数(标准节假日).sql

SQL code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkDay]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_WorkDay] GO --计算两个日期相差的工作天数 CREATE FUNCTION f_WorkDay( @dt_begin datetime, --计算的开始日期 @dt_end datetime --计算的结束日期 )RETURNS int AS BEGIN DECLARE @workday int,@i int,@bz bit,@dt datetime IF @dt_begin>@dt_end SELECT @bz=1,@dt=@dt_begin,@dt_begin=@dt_end,@dt_end=@dt ELSE SET @bz=0 SELECT @i=DATEDIFF(Day,@dt_begin,@dt_end)+1, @workday=@i/7*5, @dt_begin=DATEADD(Day,@i/7*7,@dt_begin) WHILE @dt_begin<=@dt_end BEGIN SELECT @workday=CASE WHEN (@@DATEFIRST+DATEPART(Weekday,@dt_begin)-1)%7 BETWEEN 1 AND 5 THEN @workday+1 ELSE @workday END, @dt_begin=@dt_begin+1 END RETURN(CASE WHEN @bz=1 THEN -@workday ELSE @workday END) END GO /*=================================================================*/ if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkDayADD]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_WorkDayADD] GO --在指定日期上,增加指定工作天数后的日期 CREATE FUNCTION f_WorkDayADD( @date datetime, --基础日期 @workday int --要增加的工作日数 )RETURNS datetime AS BEGIN DECLARE @bz int --增加整周的天数 SELECT @bz=CASE WHEN @workday<0 THEN -1 ELSE 1 END ,@date=DATEADD(Week,@workday/5,@date) ,@workday=@workday%5 --增加不是整周的工作天数 WHILE @workday<>0 SELECT @date=DATEADD(Day,@bz,@date), @workday=CASE WHEN (@@DATEFIRST+DATEPART(Weekday,@date)-1)%7 BETWEEN 1 AND 5 THEN @workday-@bz ELSE @workday END --避免处理后的日期停留在非工作日上 WHILE (@@DATEFIRST+DATEPART(Weekday,@date)-1)%7 in(0,6) SET @date=DATEADD(Day,@bz,@date) RETURN(@date) END


工作日处理函数(自定义节假日).sql

SQL code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->if exists (select * from dbo.sysobjects where id = object_id(N'[tb_Holiday]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [tb_Holiday] GO --定义节假日表 CREATE TABLE tb_Holiday( HDate smalldatetime primary key clustered, --节假日期 Name nvarchar(50) not null) --假日名称 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkDay]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_WorkDay] GO --计算两个日期之间的工作天数 CREATE FUNCTION f_WorkDay( @dt_begin datetime, --计算的开始日期 @dt_end datetime --计算的结束日期 )RETURNS int AS BEGIN IF @dt_begin>@dt_end RETURN(DATEDIFF(Day,@dt_begin,@dt_end) +1-( SELECT COUNT(*) FROM tb_Holiday WHERE HDate BETWEEN @dt_begin AND @dt_end)) RETURN(-(DATEDIFF(Day,@dt_end,@dt_begin) +1-( SELECT COUNT(*) FROM tb_Holiday WHERE HDate BETWEEN @dt_end AND @dt_begin))) END GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkDayADD]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_WorkDayADD] GO --在指定日期上增加工作天数 CREATE FUNCTION f_WorkDayADD( @date datetime, --基础日期 @workday int --要增加的工作日数 )RETURNS datetime AS BEGIN IF @workday>0 WHILE @workday>0 SELECT @date=@date+@workday,@workday=count(*) FROM tb_Holiday WHERE HDate BETWEEN @date AND @date+@workday ELSE WHILE @workday<0 SELECT @date=@date+@workday,@workday=-count(*) FROM tb_Holiday WHERE HDate BETWEEN @date AND @date+@workday RETURN(@date) END


计算工作时间的函数.sql

SQL code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->if exists (select * from dbo.sysobjects where id = object_id(N'[tb_worktime]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [tb_worktime] GO --定义工作时间表 CREATE TABLE tb_worktime( ID int identity(1,1) PRIMARY KEY, --序号 time_start smalldatetime, --工作的开始时间 time_end smalldatetime, --工作的结束时间 worktime AS DATEDIFF(Minute,time_start,time_end) --工作时数(分钟) ) GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkTime]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_WorkTime] GO --计算两个日期之间的工作时间 CREATE FUNCTION f_WorkTime( @date_begin datetime, --计算的开始时间 @date_end datetime --计算的结束时间 )RETURNS int AS BEGIN DECLARE @worktime int IF DATEDIFF(Day,@date_begin,@date_end)=0 SELECT @worktime=SUM(DATEDIFF(Minute, CASE WHEN CONVERT(VARCHAR,@date_begin,108)>time_start THEN CONVERT(VARCHAR,@date_begin,108) ELSE time_start END, CASE WHEN CONVERT(VARCHAR,@date_end,108)<time_end THEN CONVERT(VARCHAR,@date_end,108) ELSE time_end END)) FROM tb_worktime WHERE time_end>CONVERT(VARCHAR,@date_begin,108) AND time_start<CONVERT(VARCHAR,@date_end,108) ELSE SET @worktime =(SELECT SUM(CASE WHEN CONVERT(VARCHAR,@date_begin,108)>time_start THEN DATEDIFF(Minute,CONVERT(VARCHAR,@date_begin,108),time_end) ELSE worktime END) FROM tb_worktime WHERE time_end>CONVERT(VARCHAR,@date_begin,108)) +(SELECT SUM(CASE WHEN CONVERT(VARCHAR,@date_end,108)<time_end THEN DATEDIFF(Minute,time_start,CONVERT(VARCHAR,@date_end,108)) ELSE worktime END) FROM tb_worktime WHERE time_start<CONVERT(VARCHAR,@date_end,108)) +CASE WHEN DATEDIFF(Day,@date_begin,@date_end)>1 THEN (DATEDIFF(Day,@date_begin,@date_end)-1) *(SELECT SUM(worktime) FROM tb_worktime) ELSE 0 END RETURN(@worktime) END
分享到:
评论

相关推荐

    SQL代码生成器_sql代码生成_sqlserver_

    SQL代码生成器是一种工具,它自动化了创建SQL脚本的过程,极大地提高了开发人员的效率。在SQL Server环境下,这样的工具尤为重要,因为SQL Server数据库的复杂性和规模常常需要编写大量复杂的查询和数据操作语句。本...

    最新ASP通用防SQL注入代码

    SQL注入是一种攻击手段,攻击者通过在表单输入框或其他用户输入点插入恶意SQL代码,以获取、修改、删除数据库中的敏感信息,甚至控制整个服务器。 标题"最新ASP通用防SQL注入代码"指出这是一个针对ASP平台的最新...

    SQL Server错误代码大全.doc

    SQL Server 错误代码大全 概述: SQL Server 错误代码大全是一份详细的数据库错误代码大全,涵盖了 SQL Server 中各种可能的错误代码和解决方法。该大全旨在帮助开发者和 DBA 快速地定位和解决 SQL Server 中出现的...

    SQL代码大全

    SQL代码大全 SQL 代码大全是一本适合新手入门的指南,旨在帮助读者快速掌握 SQL Sever 的基础知识和实践技能。下面我们将从这个大全中提炼出一些重要的知识点,帮助读者更好地理解和应用 SQL。 数据库的应用 ...

    根据数据库sql生成java代码代码生成器

    1、本地执行代码生成工具,可生成controller、service、...3、可按照资源中提供的建表sql导入到数据库,然后双加start.bat,即可在上方配置的outdir目录中找到生成的代码 4、复制代码到项目目录修修改改即可使用

    SQL错误代码大全

    收集汇总了设计者在SQL 编程中所有出现的错误代码提示大全 希望对大家有所帮助

    SQL Server代码格式化插件

    好用的SQL Server代码格式化插件,有代码提示等功能

    Sqlserver代码辅助工具

    4. **标准SQL规范**:工具可能内置了SQL编码规范,帮助用户写出符合最佳实践的SQL代码,提升代码的可读性和可维护性。 5. **错误检查**:在编写过程中即时检查SQL语法错误,防止运行时出现错误,提高开发效率。 在...

    SQL进阶教程 随书sql代码

    SQL进阶教程(MICK (作者) 吴炎昌 (译者)) ,随书sql代码.本书是《SQL基础教程》作者MICK为志在向中级进阶的数据库工程师编写的一本SQL技能提升指南。全书可分为两部分,第一部分介绍了SQL语言不同寻常的使用技巧,...

    SQLSERVER 2016 代码自动补全功能格式化工具 ApexSQL

    1. **ApexSQL Complete**:这是个强大的SQL代码补全工具,为SQL Server 2016开发人员提供实时的智能提示功能。它不仅支持关键词和对象名的自动完成,还能够识别并提示函数、存储过程、视图等数据库元素。此外,它还...

    SQL防注入代码SQL防注入代码

    SQL防注入代码SQL防注入代码SQL防注入代码SQL防注入代码SQL防注入代码SQL防注入代码

    SQL Server 错误代码大全

    "SQL Server 错误代码大全" SQL Server 错误代码大全是指SQL Server数据库管理系统中出现的各种错误代码及其对应的错误信息。这些错误代码涵盖了SQL Server的各个方面,包括系统错误、存储错误、网络错误、打印机...

    SQL代码提示插件(SQL Assistant)

    SQL代码提示插件,如"SQL Assistant",是数据库开发者和管理员的重要工具,尤其是在处理Microsoft SQL Server (MSSQL)时。这款插件为用户提供了一种高效的方式来进行SQL查询编写,通过提供类似PL/SQL Developer中的...

    sql代码生成器

    SQL代码生成器是一种工具,它能够自动生成SQL(Structured Query Language)代码,帮助开发者节省时间,提高工作效率。这种工具尤其适用于处理复杂的数据库操作,如创建表、插入数据、更新记录或者执行复杂的查询。...

    SQL 出高级代码、文档大全

    4. **存储过程和触发器**:存储过程是一组预编译的SQL语句,可以封装成一个单元,多次调用,提高了代码复用性和执行效率。触发器则是在满足特定条件时自动执行的程序,常用于实现业务规则。 5. **索引与优化**:...

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》示例代码

    通过《Microsoft SQL Server 2005技术内幕:T-SQL查询》中的示例代码,读者可以深入理解T-SQL的各个层面,从而更好地在实际项目中应用这些技术,解决复杂的数据问题。同时,书中还可能包含一些高级主题,如XML处理、...

    AI自动生成SQL语句的开源代码 sqlcoder-main.zip

    开源的AI自动生成SQL语句源代码,这款SQLCoder-70B-Alpha在文本到SQL的转换能力上超越了包括GPT-4在内的所有通用模型,它能更准确地理解你的需求,并生成相应的SQL查询。SQLCoder2和SQLCoder-7B模型已经向公众开放,...

    SQL美化工具原代码

    2. **Format**:指的是代码格式化,这里特指SQL代码的美化和标准化。 3. **c#**:这是一种面向对象的编程语言,广泛应用于Windows桌面应用、Web应用以及游戏开发,由微软公司开发。 在压缩包内的“SQLFormat”可能...

Global site tag (gtag.js) - Google Analytics