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数据库中计算周别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)