SQL查询日历
这东西给自己留着用。
经常会用到一些查询需要做全月统计,但有些时候的统计需要将未发生日期也显示出来,因此会需要一个固定的日期表,(T6的自定义查询估计也是需要的,至少以前是这样)
下面写两种方法来获取指定月份的日期表,第一种适用SQL 2000及以上版本的数据库,第二种只适用SQL 2005及以上版本数据库
函数一:
--支持SQL 2000
CREATE FUNCTION dbo.GetCalendar(@Begin NVARCHAR(30))
RETURNS @rst TABLE(dDate SMALLDATETIME,iDx int IDENTITY(1,1) NOT NULL)
AS
BEGIN
IF ISNULL(@Begin,'')='' RETURN
INSERT INTO @rst
SELECT TOP (DATEDIFF(DAY,@Begin,DATEADD(MONTH,1,@Begin)-1)+1) @Begin
FROM syscolumns
UPDATE @rst SET dDate=dDate+iDx-1
RETURN
END
GO
使用方法:
SELECT * FROM dbo.GetCalendar('2015-6-1')
函数二:
--需要ROW_NUMBER函数的支持,支持SQL 2005及以上版本数据库
CREATE FUNCTION dbo.GetCalendar2005(@Begin NVARCHAR(30))
RETURNS @rst TABLE(dDate SMALLDATETIME)
AS
BEGIN
INSERT INTO @rst
SELECT TOP (DATEDIFF(DAY,@Begin,DATEADD(MONTH,1,@Begin)-1)+1) CAST(@Begin AS SMALLDATETIME)-1+ROW_NUMBER() OVER(ORDER BY ID)
FROM
syscolumns
RETURN
END
GO
使用方法:
SELECT * FROM dbo. GetCalendar2005('2015-6-1')
最新文章
- CORS详解[译]
- java实现将汉字转为拼音
- C Primer Plus_第三章_数据和C_复习题与编程练习
- BZOJ3515 : EvenPaths
- [转]VS 2013 连接数据库报错 未能加载文件或程序集 Microsoft.SqlServer.Management.Sdk.Sfc
- RobotFrameWork接口报文测试-----(三)demo的加强版(数据驱动测试)
- crm 4 UserHasRole
- UVa 11090 Going in Cycle!!【Bellman_Ford】
- Objective-C中的@dynamic(转)
- 大型系统OA--技术
- PDF模板报表导出(Java+Acrobat+itext)
- 关于PHP导入项目的时候导入不了的情况
- 怎样批量把excel中已显示的科学计数法取消
- python-ansible api2.0 多进程执行不同的playbook
- ops-web运维平台-create.jsp-mootools下拉框-复选框
- [GIT] 更新.repo目录
- java读大文件最快性能【转】
- 初学习Qt的一些感悟
- 选择J2EE的SSH框架的理由
- 尚学堂java 参考答案 第八章