sql server:自定義計算固定工作日,雙休日函數

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: ---sql server declare @date datetime set @date='2012-02-03'--getdate() --本月第一天 SELECT DATEADD(mm, DATEDIFF(mm,0,@date), 0) --本月最后一天 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,@date)+1, 0
---sql server 
declare @date datetime
set @date='2012-02-03'--getdate()
--本月第一天
SELECT DATEADD(mm, DATEDIFF(mm,0,@date), 0)
--本月最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,@date)+1, 0))


---有個月多少天函數
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetAMonthHowNumber]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetAMonthHowNumber]
GO
CREATE   function  GetAMonthHowNumber
(  
	@date datetime
)
returns int
as
begin
	declare @int int
	select @int=datediff(dd , @date , dateadd(mm, 1, @date))
	return @int
end
GO

--
select [dbo].[GetAMonthHowNumber] (getdate()) AS '月天數'


---計算當月周六,周日有多少天
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetAMonthStatSunNumber]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetAMonthStatSunNumber]
GO
CREATE   function  GetAMonthStatSunNumber
(  
	@date datetime
)
returns int
as
begin
declare @Sdate datetime ,@Edate datetime

SELECT @Sdate=DATEADD(mm, DATEDIFF(mm,0,@date), 0)
SELECT @Edate=dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,@date)+1, 0))
--set @Sdate='2013-05-01'
--set @Edate='2013-05-31'
declare @aa table (strdate datetime)  
declare @i int  
set @i=datediff(day,@Sdate,@Edate)  
while(@i>=0)  
begin  
insert @aa  values (dateadd(day,@i,@Sdate))  
set @i=@i-1  
end  
select @i= count(*)  from @aa where   datepart(weekday,strdate) in (1,7)  --not in (1,7)
return @i
end
go

--
select [dbo].[GetAMonthStatSunNumber] (getdate()) AS '雙休日天數'



--計算當月除周六,周日有多少天,也是有多少工作日
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetAMonthWorkDayNumber]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetAMonthWorkDayNumber]
GO
CREATE   function  GetAMonthWorkDayNumber
(  
	@date datetime
)
returns int
as
begin
declare @Sdate datetime ,@Edate datetime

SELECT @Sdate=DATEADD(mm, DATEDIFF(mm,0,@date), 0)
SELECT @Edate=dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,@date)+1, 0))
--set @Sdate='2013-05-01'
--set @Edate='2013-05-31'
declare @aa table (strdate datetime)  
declare @i int  
set @i=datediff(day,@Sdate,@Edate)  
while(@i>=0)  
begin  
insert @aa  values (dateadd(day,@i,@Sdate))  
set @i=@i-1  
end  
select @i= count(*)  from @aa where   datepart(weekday,strdate) not in (1,7)  --not in (1,7)
return @i
end
go

---
select [dbo].[GetAMonthWorkDayNumber] (getdate()) as '工作日天數'

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
4月前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
94 0
|
2天前
|
SQL 前端开发
基于jeecgboot复杂sql查询的列表自定义列实现
基于jeecgboot复杂sql查询的列表自定义列实现
|
4月前
|
SQL 数据库
在mybatis-plus怎么使用自定义的sql语句
在mybatis-plus怎么使用自定义的sql语句
69 0
|
6天前
T-sql 高级查询( 5*函数 联接 分组 子查询)
T-sql 高级查询( 5*函数 联接 分组 子查询)
|
23天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标自定义异常:数据探险家的“专属警示灯”
【4月更文挑战第19天】Oracle PL/SQL中的游标自定义异常是处理数据异常的有效工具,犹如数据探险家的警示灯。通过声明异常名(如`LOW_SALARY_EXCEPTION`)并在满足特定条件(如薪资低于阈值)时使用`RAISE`抛出异常,能灵活应对复杂业务规则。示例代码展示了如何在游标操作中定义和捕获自定义异常,提升代码可读性和维护性,确保在面对数据挑战时能及时响应。掌握自定义异常,让数据管理更从容。
|
1月前
|
SQL 关系型数据库 MySQL
MYSQL数字函数实操宝典:场景化SQL语句一网打尽
本文作为MYSQL数字函数实操宝典,通过丰富的场景化SQL语句实例,一网打尽了MYSQL中常用的数字函数。我们深入探讨了ROUND函数在金额四舍五入、评分计算等场景的应用,展现了其在确保数据准确性和展示规范性方面的重要性。同时,FLOOR函数在分页处理、价格计算等实际案例中的灵活运用,也体现了其在向下取整方面的优势。此外,CEIL函数在分页处理、费用计算等方面的应用案例,充分展示了其向上取整的功能特点。这些实用案例不仅有助于读者更好地理解MYSQL数字函数的工作原理,更为开发者在实际开发中提供了有价值的参考
46 8
|
2月前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数
|
2月前
|
SQL 存储 Apache
在 Apache Flink SQL 中,并没有内置的 GROUP_CONCAT 函数
【2月更文挑战第16天】在 Apache Flink SQL 中,并没有内置的 GROUP_CONCAT 函数
212 2