With T
站在用戶的角度思考問題,與客戶深入溝通,找到青秀網(wǎng)站設(shè)計與青秀網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設(shè)計、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋青秀地區(qū)。
As
(
Select ID,結(jié)束月,相差月 From TT
Union All
Select T.ID,Dateadd(M,-1,T.結(jié)束月),T.相差月-1 From TT Inner Join T On
TT.id=T.id Where T.相差月1
)
Select ID,結(jié)束月 From T
Order By id,結(jié)束月
--TT是你的表名
--SQL2005或以上版本
使用 datename 函數(shù),獲取日期的月份。
例: 表 table 中的 rq 字段
SQL語句如下:
select date(mm,rq) from table
相關(guān)日期、時間的提取方法還有:
年份 datename(yy,rq)
月份 datename(mm,rq)
日 datename(dd,rq)
小時 datename(hh,rq)
分鐘 datename(n,rq) //不是 m,也不是 mm
設(shè)表名為tablename,編號字段名為合同編號,建立下面兩個觸發(fā)器,即可保證編碼月份部份合法。
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數(shù)據(jù)庫中提取日期應(yīng)該使用,并把年月日分別截取出來應(yīng)該使用
數(shù)據(jù)庫提供的時間函數(shù)。
1:使用year,month,day用來提取年月日
如:select year(getdate()),month(getdate()),day(getdate())
2:使用DATEPART 獲取年月日
如:select DATEPART('year',getdate()),DATEPART('month',getdate()),DATEPART('day',getdate())
----------------------------------------------------------------------------
如果字段是varchar類型的話,可以先將字段轉(zhuǎn)換為日期類型。
使用類型轉(zhuǎn)換函數(shù)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')