plsql 根据日期算出星期

plsql 根据日期算出星期,第1张

create or replace function Test(p_date in date) return varchar is

v_day varchar2(10);

begin

select to_char(p_date ,'d') into v_day from dual;

或者 V_DAY:= to_char(p_date ,'d') ;

RETURN V_DAY;

end test;

未调试,你自己调试一下,记得散分

:不是当年的第几周,这个函数相信我们都知道,数据库已经自带的!(经过实测,考勤,工资计算中利用,非常实用,我在网络中苦苦的寻找这个源代码,找到关于vb的代码,但是我想在数据库中就实现,这样做的好处能提高数据读取速度,对统计分析带来很大的好处,实在没法,老板又催的急,自己便把那段vb代码转化为SQL语句,如有问题敬请提出,万一我把公司考勤,工资计算搞出问题来就完了,其实这段代码拼出函数,在数据库中非常简单实用!)CREATE FUNCTION WeekOfMonth(@day datetime)RETURNS intASbegin----declare @day datetimedeclare @num intdeclare @Start datetimedeclare @dd intdeclare @dayofweek char(8)declare @dayofweek_num char(8)declare @startWeekDays intif datepart(dd,@day)=1return 1elseset @Start= (SELECT DATEADD(mm, DATEDIFF(mm,0,@day), 0)) --一个月第一天的set @dayofweek= (datename(weekday,@Start)) ---得到本月第一天是周几set @dayofweek_num=(select (case @dayofweek when '星期一' then 2when '星期二' then 3when '星期三' then 4when '星期四' then 5when '星期五' then 6when '星期六' then 7when '星期日' then 1end))set @dayofweek_num=7-@dayofweek_num+1---得到本月的第一周一共有几天---print @dayofweek_numset @dd=datepart(dd,@day) ----得到今天是这个月的第几天--print @ddif @dd<=@dayofweek_num--小于前一周的天数return 1elseset @dd=@dd-@dayofweek_numif @dd % 7=0beginset @num=@dd / 7return @num+1endelse --if @dd % 7<0set @num=@dd / 7

SELECT DATEPART(WEEK,GETDATE())

这个是一个获取日期是当年的第几周的函数  因为中国和国外周的判别不同

所以这个函数如果是相连周日和周一  一般是同一周

datepart(wk,@date)

可以得到某天在本年的第几周,那么这一天的在本年的第几周

减去

这一天所在月的第一天在本年的第几周再加一,就是这一天在当月的周数。

declare

@date

datetime

set

@date

=

'2010-01-12'

select

cast(datepart(mm,@date)

as

varchar(2))

+

'月第'

+

cast((datepart(wk,@date)

-

datepart(wk,convert(varchar(7),@date,120)

+

'-01')

+

1)

as

varchar(2))

+

'周'

--1月第3周

用getdate()可以得到每个星期天,sql查询语句select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate()) ), -1)

union all select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate()) ), 6)

union all select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate()) ), 13)

union all select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate()) ), 20) 星期六,就是往前推一天其实挺简单的,就是饶一下,方法活用

DATEPART:

返回代表指定日期的指定日期部分的整数。

语法:

DATEPART ( datepart , date )

参数:

datepart

是指定应返回的日期部分的参数。

下面列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。

日期缩写:

year yy, yyyy

quarter qq, q

month mm, m

dayofyear dy, y

day dd, d

week wk, ww

weekday dw

Hour hh

minute mi, n

second ss, s

millisecond ms

以上就是关于plsql 根据日期算出星期全部的内容,包括:plsql 根据日期算出星期、判断某天是当月的第几周的sql函数、各位大大帮忙,怎样在SQL数据库中计算周别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/9317945.html

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

发表评论

登录后才能评论

评论列表(0条)

保存