MSSQL 生成日期列表代码
更新时间:2009年09月28日 18:05:48 作者:
MSSQL 生成日期列表的代码,需要的朋友可以参考下。
复制代码 代码如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_getdate]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_getdate]
GO
create function [dbo].[f_getdate]
(
@year int, --要查询的年份
@bz bit --@bz=0 查询工作日,@bz=1 查询休息日,@bz IS NULL 查询全部日期
)
RETURNS @re TABLE(Date datetime,Weekday nvarchar(3))
as
begin
DECLARE @tb TABLE(ID int ,Date datetime)
insert @tb select number,
dateadd(day,number,DATEADD(Year,@YEAR-1900,'1900-1-1'))
from master..spt_values where type='P' and number between 0 and 366
DELETE FROM @tb WHERE Date>DATEADD(Year,@YEAR-1900,'1900-12-31')
IF @bz=0
INSERT INTO @re(Date,Weekday)
SELECT Date,DATENAME(Weekday,Date)
FROM @tb
WHERE (DATEPART(Weekday,Date)+@@DATEFIRST-1)%7 BETWEEN 1 AND 5
ELSE IF @bz=1
INSERT INTO @re(Date,Weekday)
SELECT Date,DATENAME(Weekday,Date)
FROM @tb
WHERE (DATEPART(Weekday,Date)+@@DATEFIRST-1)%7 IN (0,6)
ELSE
INSERT INTO @re(Date,Weekday)
SELECT Date,DATENAME(Weekday,Date)
FROM @tb
RETURN
end
go
select * from dbo.[f_getdate]('2009',0)
相关文章
SQL Server误区30日谈 第19天 Truncate表的操作不会被记录到日志
这个误区也同样流传已久,我想是时候通过一些Demo进行揭穿了2013-01-01
如何快速删掉SQL Server登录时登录名下拉列表框中的选项
本文给大家分享如何快速删掉SQL Server登录时登录名下拉列表框中的选项,包括问题原因分析和解决方案,非常不错,需要的朋友参考下吧2016-11-11
SQL server数据库创建代码 filegroup文件组修改的示例代码
这篇文章主要介绍了SQL server数据库创建代码 filegroup文件组修改的实现方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-08-08
MS SQL Server STUFF实现统计记录行转为列显示
SQL语句行转列函数是一种用于将多个行数据转换为一列的函数,本文主要介绍了MS SQL Server STUFF实现统计记录行转为列显示,具有一定的参考价值,感兴趣的可以了解一下2024-04-04
SqlServer实现类似Oracle的before触发器示例
本节主要介绍了SqlServer如何实现类似Oracle的before触发器,需要的朋友可以参考下2014-08-08


最新评论