自定义起始及截止日期,计算周期 函数

USE [BM]
GO
/****** Object:  UserDefinedFunction [dbo].[ZfunWeek]    Script Date: 2015-12-19 15:30:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER function  [dbo].[ZfunWeek](@SDate CHAR(8),@EDate CHAR(8),@week int) returns
int
--计算周期
as 
begin

 declare  @weektemp int;-- declare @SDate char(8),@EDate char(8), @week int


 SELECT @weektemp=0 --, @SDate='20151201',@EDate='20151220',@week=0
while (@EDate>=@SDate)
begin
set @SDate=CONVERT(char(8),dateadd(dd,7,@SDate),112);
set  @week=@week+1
set @weektemp= @week
end
return @weektemp
--select @weektemp
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java的Calendar类来计算起始日期截止日期之间的半年数。具体实现步骤如下: 1. 创建两个Calendar对象,分别表示起始日期截止日期。 2. 计算起始日期截止日期的年份和份。 3. 根据年份和计算起始日期截止日期所在的半年。 4. 计算起始日期所在半年到截止日期所在半年之间的半年数。 下面是一个示例代码: ```java import java.util.Calendar; import java.util.Date; public class Main { public static void main(String[] args) { // 创建起始日期截止日期的Calendar对象 Calendar startCalendar = Calendar.getInstance(); startCalendar.setTime(new Date("2021/01/01")); Calendar endCalendar = Calendar.getInstance(); endCalendar.setTime(new Date("2021/12/31")); // 计算起始日期截止日期的年份和份 int startYear = startCalendar.get(Calendar.YEAR); int startMonth = startCalendar.get(Calendar.MONTH) + 1; int endYear = endCalendar.get(Calendar.YEAR); int endMonth = endCalendar.get(Calendar.MONTH) + 1; // 计算起始日期所在半年和截止日期所在半年 int startHalfYear = (startMonth <= 6) ? 1 : 2; int endHalfYear = (endMonth <= 6) ? 1 : 2; // 计算起始日期所在半年到截止日期所在半年之间的半年数 int halfYearCount = (endYear - startYear) * 2 + (endHalfYear - startHalfYear) + 1; System.out.println("起始日期:" + startCalendar.getTime()); System.out.println("截止日期:" + endCalendar.getTime()); System.out.println("半年数:" + halfYearCount); } } ``` 输出结果如下: ``` 起始日期:Fri Jan 01 00:00:00 CST 2021 截止日期:Fri Dec 31 00:00:00 CST 2021 半年数:2 ``` 注意,这里的半年是按照自然半年来计算的,即每年的11日到630日为上半年,71日到1231日为下半年。如果按照财年半年来计算,则需要将计算起始日期截止日期所在半年的代码修改为: ```java int startHalfYear = (startMonth <= 9) ? 1 : 2; int endHalfYear = (endMonth <= 9) ? 1 : 2; ``` 这样计算出来的半年会以1、2、3、4来表示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值