博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql server获取连续年份、月份、日
阅读量:4965 次
发布时间:2019-06-12

本文共 2325 字,大约阅读时间需要 7 分钟。

if exists(select 1 from sysobjects where type='TF' and name='ATPublic_TF_GetSummaryDate')    drop function ATPublic_TF_GetSummaryDategocreate function ATPublic_TF_GetSummaryDate(    @calltype varchar(1)='',    --0:年 1:月    1:日    @startdate DATE,            --开始日期    @enddate DATE                --结束日期)  /***     Author:     Create date: 2018-01-18    Description: 循环返回日期       Example: ***/RETURNS @retDateValue TABLE (datevalue varchar(32))                                                                               as    begin    if @calltype='0'    begin        insert into @retDateValue(datevalue)        select substring(convert(varchar(32),DATEADD(YEAR,number,@startdate),21),1,4) as yearvalue                                                                                      from master..spt_values WHERE TYPE = 'P' AND DATEADD(YEAR,number,@startdate) <= @enddate                    end    else if @calltype='1'    begin        insert into @retDateValue(datevalue)        select substring(convert(varchar(32),DATEADD(MONTH,number,@startdate),21),1,7) as yearvalue                                                                                      from master..spt_values WHERE TYPE = 'P' AND DATEADD(MONTH,number,@startdate) < @enddate                    end    else if @calltype='2'    begin        insert into @retDateValue(datevalue)        select convert(varchar(32),DATEADD(DAY,number,@startdate),21)+' 00:00:00' as yearvalue                                                                                      from master..spt_values WHERE TYPE = 'P' AND DATEADD(DAY,number,@startdate) < @enddate                    end    returnend                                                                        go

调用示例:

declare @beginDate varchar(32)='', @endDate varchar(32)='',@datebefore datetimeselect @beginDate='2017-01-01',@endDate='2017-05-31'select @datebefore=CONVERT(datetime,@beginDate)select datevalue   from ATPublic_TF_GetSummaryDate('0',@beginDate,@endDate)select datevalue from ATPublic_TF_GetSummaryDate('1',@beginDate,dateadd(YEAR,1,@datebefore))select datevalue from ATPublic_TF_GetSummaryDate('1',@beginDate,dateadd(MONTH,1,@datebefore))select datevalue from ATPublic_TF_GetSummaryDate('2',@beginDate,dateadd(MONTH,1,@datebefore))

 

转载于:https://www.cnblogs.com/970119449blog/p/8335197.html

你可能感兴趣的文章
linux 命令之top
查看>>
有关远程设置的问题
查看>>
BZOJ 1800: [Ahoi2009]fly 飞行棋
查看>>
2019,2月份第三个星期,js小突破了一波,笔记
查看>>
洛谷 [P3033] 牛的障碍
查看>>
jquery 对HTML标签的克隆、删除
查看>>
用C写的俄罗斯方块游戏 By: hoodlum1980 编程论坛
查看>>
世界上最方便的SharePoint移动客户端--Rshare
查看>>
MongoDB要点
查看>>
字段与属性的总结与比较
查看>>
05最小生成树_Prim
查看>>
centos iptables
查看>>
Mysql数据库日志
查看>>
Python基础-数据类型
查看>>
unity3d 移动与旋转 2
查看>>
MyEclipse安装Freemarker插件
查看>>
php 文件下载
查看>>
寻找二叉查找树中比指定值小的所有节点中最大的那个节点
查看>>
如何设置输入框达到只读效果
查看>>
html5模拟平抛运动
查看>>