189 8069 5689

sqlserver本月初,sql月末

SQL写函数 输入参数:日期(YYYYMMDD)和下面某一个参数 返回数据:参数说明要返回的日期。

函数代码:

专注于为中小企业提供网站制作、成都做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业山海关免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

create or replace function func_date( --创建函数名称func_date

p_yyyymmdd number, --定义参数1 

p_num      number) --定义参数2

return date        --返回结果类型为date

as

v_result date; --声明返回结果变量

begin

if    p_num=11

then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'mm'); --本月初

elsif p_num=12

then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'q'); --本季初

elsif p_num=13

then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'yyyy'); --本年初

elsif p_num=21 

then v_result:=last_day(to_date(p_yyyymmdd,'yyyy-mm-dd'));  --本月末

elsif p_num=22 

then v_result:=last_day(add_months(trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'q'),2)); --本季度末

elsif p_num=23 

then v_result:=last_day(add_months(trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'yyyy'),11)); --本年末

elsif p_num=31  

then v_result:=add_months(trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'mm'),-1); --上月初

elsif p_num=32

then v_result:=add_months(trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'q'),-3); --上季初

elsif p_num=33

then v_result:=add_months(trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'yyyy'),-12); --上年初

elsif p_num=41

then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'mm')-1; --上月末

elsif p_num=42

then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'q')-1; -- 上季末

elsif p_num=43

then v_result:=trunc(to_date(p_yyyymmdd,'yyyy-mm-dd'),'yyyy')-1; --上年末

else 

raise_application_error(-20001,'p_num参数说明不存在!'); --其它参数抛出异常

end if;

return v_result; --返回结果

end func_date;

/

调用函数:

select func_date(20161219,11) from dual;

用SQLserver数据库插入本月缺少的数据能否写个脚本?

把在5月有但6月没有的数据(条件是sDeptNum、sTypeNum相同)查出来,插入到表中即可,一条sql搞定

sql如何获取日期月份的第一天

如:给定的年月格式为20157,代表2015年7月。

取某月第一天:

SELECT CAST((LEFT('20157',4)+'-'+SUBSTRING('20157',5,LEN('20157'))+'-'+'01') AS DATETIME)

结果:

怎么用sql语句查找从月初到月末的数据

要找出月初到月末的数据,那只要找出本月范围即可,SQL提供了DateDiff来解决这个问题:

DateDiff 函数:返回两个日期之间的时间间隔。

语法

DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])

示例如下:

select * from table where datediff(month,getdate(), date_colName)=0

如果当前日期getdate() 和表中的字段date_colName 相等,即为本月。

sqlserver查询本月所有不在这个时间段的数据(如 整个四月份不在 7.30-8.30 12.30-13.30这个时间段)?

首先你得有字段记录时间,假设这个字段是datetime类型,名为[create_time];

然后,可以使用datepart函数来获取一个时间类型的年、月、日、时、分、秒的值;

最后,可以将hour:minute转换为一个带小数的类型来比较,例如numeric(4,2)。

select * from ...

where datepart(month,updtime)=4

and not datepart(hour,create_time) +convert(numeric(4,2),datepart(minute,create_time))/100 between 7.3 and 8.3

and not datepart(hour,create_time) +convert(numeric(4,2),datepart(minute,create_time))/100 between 12.3 and 12.3


名称栏目:sqlserver本月初,sql月末
URL标题:http://jkwzsj.com/article/hdohej.html

其他资讯