SQLServer获取时间日期 相关 函数

连续日期

ALTER FUNCTION [dbo].[fun_getDateListByStartAndEnd]
(	
   @startTm varchar(30),
	 @endTm varchar(30)
)
RETURNS TABLE 
AS
RETURN 
(
	SELECT  DATEADD(dd, number, @startTm) AS MYTM,cast(MONTH(DATEADD(dd, number, @startTm)) as varchar)+'月'+cast(DAY(DATEADD(dd, number, @startTm)) as varchar)+'日' AS MYDAY
    FROM  master.dbo.spt_values
    WHERE  type = 'P' AND number <= DATEDIFF(DAY,CONVERT(varchar(20), @startTm, 23),CONVERT(varchar(20), @endTm, 23))
)

连续月

ALTER FUNCTION [dbo].[fun_getMonth]
(	
   @startTm varchar(30),
	 @endTm varchar(30)
-- 	 @stcd varchar(8)
)
RETURNS TABLE 
AS
RETURN 
(
		SELECT  DATEADD(mm, number, @startTm) AS MYTM,
DateName(month,DATEADD(mm, number,@startTm))+'月' AS MYDAY
FROM  master.dbo.spt_values  WHERE  type = 'P' AND number<= DATEDIFF(mm,CONVERT(varchar(20),@startTm, 23),CONVERT(varchar(20), @endTm, 23))
)

 其他自行改造

输入年获取当前年所有月份

ALTER FUNCTION [dbo].[fun_getMonthByYear]
(	
   @year varchar(4)
)
RETURNS TABLE 
AS
RETURN 
(
select SUBSTRING(CONVERT(NVARCHAR(10), DATEADD(MONTH, number, @year),120),1,7) as YF
from master..spt_values 
where type='P' and number <= 11
)

 输入 2021-01获取当月天数

ALTER FUNCTION [dbo].[fun_getDayByMonth]
(	
   @tm varchar(30)
-- 	 @stcd varchar(8)
)
RETURNS TABLE 
AS
RETURN 
(
		select convert(varchar(10),dateadd(dd,number,convert(varchar(8), @tm+'-01',120)+'01'),120) as DAY
from master..spt_values
where type='P'
and dateadd(dd,number,convert(varchar(8),@tm+'-01',120)+'01')<=dateadd(dd,-1,convert(varchar(8),dateadd(mm,1,@tm+'-01'),120)+'01') 
)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yzhSWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值