十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
With T
站在用户的角度思考问题,与客户深入沟通,找到青秀网站设计与青秀网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广、申请域名、网站空间、企业邮箱。业务覆盖青秀地区。
As
(
Select ID,结束月,相差月 From TT
Union All
Select T.ID,Dateadd(M,-1,T.结束月),T.相差月-1 From TT Inner Join T On
TT.id=T.id Where T.相差月1
)
Select ID,结束月 From T
Order By id,结束月
--TT是你的表名
--SQL2005或以上版本
使用 datename 函数,获取日期的月份。
例: 表 table 中的 rq 字段
SQL语句如下:
select date(mm,rq) from table
相关日期、时间的提取方法还有:
年份 datename(yy,rq)
月份 datename(mm,rq)
日 datename(dd,rq)
小时 datename(hh,rq)
分钟 datename(n,rq) //不是 m,也不是 mm
设表名为tablename,编号字段名为合同编号,建立下面两个触发器,即可保证编码月份部份合法。
create TRIGGER TR_tablename_Insert ON tablename
FOR INSERT
AS
declare
@BH varchar(30)
select @BH=合同编号 from inserted
if convert(int,substring(@bh,7,2)) between 1 and 12
begin
raiserror(' 编码中月份部份不合法,请重新编码!',16,1)
return
end
GO
create TRIGGER TR_tablename_UPDATE ON tablename
FOR UPDATE
AS
declare
@BH varchar(30)
select @BH=合同编号 from inserted
if convert(int,substring(@bh,7,2)) between 1 and 12
begin
raiserror(' 编码中月份部份不正确,请重新编码!',16,1)
return
end
GO
从sqlserver数据库中提取日期应该使用,并把年月日分别截取出来应该使用
数据库提供的时间函数。
1:使用year,month,day用来提取年月日
如:select year(getdate()),month(getdate()),day(getdate())
2:使用DATEPART 获取年月日
如:select DATEPART('year',getdate()),DATEPART('month',getdate()),DATEPART('day',getdate())
----------------------------------------------------------------------------
如果字段是varchar类型的话,可以先将字段转换为日期类型。
使用类型转换函数convert或者cast
如:cast('2015-07-14' as datetime)
sqlserver:
select convert(varchar(7),dateadd(mm,-t.number,getdate()),120)
from
(select number from master..spt_values where type='P') t
where year(dateadd(mm,-t.number,getdate()))=year(getdate())
order by convert(varchar(7),dateadd(mm,-t.number,getdate()),120)
oracle:
select to_char(add_months(sysdate, -t.rn), 'yyyy-mm')
from dual a, (select rownum - 1 rn from dual connect by rownum = 12) t
where to_char(add_months(sysdate, -t.rn), 'yyyy') =
to_char(sysdate, 'yyyy')
order by to_char(add_months(sysdate, -t.rn), 'yyyy-mm')