sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数

sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数,第1张

drop function dbof_get_workdays

go

CREATE FUNCTION dbof_get_workdays(@bdate DATETIME, @edate DATETIME)

RETURNS INTEGER

AS BEGIN

DECLARE @workdays INTEGER

IF @bdate > @edate

RETURN -1

SELECT @workdays =

--如果终止日期与起始日期在同一个星期内,只需要计算有几天即可

CASE WHEN DATEPART(wk, @edate-1)-DATEPART(wk,@bdate) = 0 THEN

CASE WHEN DATEPART(dw, @bdate) > 5 THEN 0

WHEN DATEPART(dw, @edate-1) > 5 THEN 6 - DATEPART(dw, @bdate)

ELSE DATEPART(dw, @edate-1) - DATEPART(dw, @bdate) + 1 END

--如果终止日期与起始日期在不同的星期内

--首先计算出除前后两个星期外完整的星期数 5

ELSE (DATEDIFF(dd,@bdate,@edate)

- (8-DATEPART(dw, @bdate))

- DATEPART(dw, @edate-1)) / 7 5

--再加上第一个星期里的工作日数

+ CASE WHEN DATEPART(dw, @bdate) < 6 THEN 6 - DATEPART(dw, @bdate)

ELSE 0 END

--加上末一个星期里的工作日数

+ CASE WHEN DATEPART(dw, @edate-1)>5 THEN 5 ELSE DATEPART(dw, @edate-1) END

END

RETURN @workdays

END

go

select dbof_get_workdays(dateadd(day,-21,getdate()),getdate())

场内保证金华币基金周五买入。下午卖出获取6天收益。

上星期五三点前买入的基金到下星期五三点前卖出算六天。不够七天。因为根据基金的买卖规则来看。在周五购买的基金必须要到礼拜一才会确认份额。因为礼拜六礼拜天是停市的。如果是按照这样子的规则来进行计算的话。那确实是不能够算7天的。在基金交易当中。如果持有的时间在7天之内。那公司将会收取相应的赎回费率。费率的高低要视实际情况而定。

select

from (select to_date('2013-01-01', 'yyyy-mm-dd') + rownum - 1 days

from dba_objects) a

where extract(year from days) = 2013

and to_char(days, 'WW') = 22

and to_char(days, 'day') in ('星期一', '星期二', '星期三', '星期四', '星期五')

年份:2013,第几周:22

中文版sql Server中:

Select '本周一',DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

Select '下周一',DATEADD(wk, DATEDIFF(wk,0,getdate())+1, 0)

Select '本周最末',dateadd(ms,-3,DATEADD(wk, DATEDIFF(wk,0,getdate())+1, 0))

Select '本周五',DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

Select '本周五末',dateadd(day,-2,dateadd(ms,-3,DATEADD(wk, DATEDIFF(wk,0,getdate())+1, 0)))

$w=5;//求周五

echo getLastWeekNo(2017,2,$w);

/

  求某年 某月 最后一周 周几的日期

  @param unknown $year 年

  @param unknown $month 月

  @param unknown $weekNo 求周几(周日传0)

  @return string 最后周$weekNo的日期

 /

function getLastWeekNo($year,$month,$weekNo){

//设置时区

date_default_timezone_set('PRC');

//求当月第一天

$beginDate=date('Y-m-01', strtotime($year'-'$month'-01'));

//当月最后一天时间戳

$endDate=strtotime("$beginDate +1 month -1 day");

//求最后一天是周几

$numberWk=intval(date("w",$endDate));

//如果所求周几跟当前日期相等则直接返回日期

if($numberWk==$weekNo){

$strTime=$endDate;

}else{

//计数器

$j=0;

//计算所求的周几数跟最后一天相差的天数

while($numberWk!=$weekNo) {

  if($numberWk==0){

  $numberWk=6;

  }else{

  $numberWk=$numberWk-1;

  }

  $j++;

//求相差天数后的日期

$strTime=strtotime(date('Y-m-d',$endDate)" -$j day");

}

return date('Y-m-d',$strTime);

}

您好,根据您的问题,周六和周日用英镑换人民币的汇率,一般是以上周五的汇率为准。由于汇率是每天都在变动的,所以周六和周日的汇率可能会有一定的差异,但是一般情况下,汇率的差异不会太大。因此,建议您可以以上周五的汇率为准,进行英镑兑换人民币的 *** 作。

以上就是关于sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数全部的内容,包括:sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数、场内保证金华币基金周五买入丶,下午卖出获取几天收益、oracle 获取指定周的星期一到星期五日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9527759.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存