select NFast_No from Web_FTT_Param where getdate() between Begin_date and End_date select top 100 cancel_month, dateadd(day, -day(cancel_month), cancel_month) as lastmonth from tbl_customer_cancellation update tbl_customer_cancellation set lastactivemonth = dateadd(day, -day(cancel_month), cancel_month) --增減月份時,統一以每月1日為基準,避免注意大小月份日期不一,增減以後造成錯誤。 update tbl_customer_cancellation set First4Month = dateadd(day, -1, dateadd(month, 3, dateadd(day, -day(pc_date)+1, pc_date))) ,Last4Month = dateadd(day, -1, dateadd(month, -3, dateadd(day, -day(cancel_month)+1, cancel_month))) select top 100 cancel_month ,dateadd(day, -1, dateadd(month, -3, dateadd(day, -day(cancel_month)+1, cancel_month))) ,pc_date ,dateadd(day, -1, dateadd(month, 3, dateadd(day, -day(pc_date)+1, pc_date))) from tbl_customer_cancellation select top 100 pc_date, first3month, last4month, lastactivemonth from tbl_customer_cancellation ------------------------------------------------------------------ --以下的範例是因為資料庫所在地區是屬於+8時區,所以會有八小時差異 SELECT GETUTCDATE() '格林威治標準時間', GETDATE() '目前日期和時間' --說明DATEADD與DATEDIFF DECLARE @dt1 DATETIME ,@dt2 DATETIME SET @dt1='2007/01/17' SET @dt2='2007/09/05' SELECT DATEADD(mm,12,@dt1) '找出12個月之後日期', DATEDIFF(dd,@dt1,@dt2) '找出兩者間的日數差距' --說明DATEPART與DATENAME DECLARE @dt1 DATETIME SET @dt1='2007/01/17' SELECT DATEPART(dw,@dt1),DATENAME(dw,@dt1) --結果,該日為星期三,從週日為1開始起算,星期三的數字為4 --SELECT GETDATE() --SELECT * FROM SYSLANGUAGES --說明DATEPART與DATENAME搭配不同語系的輸出結果 SET LANGUAGE French --設定執行階段為法語 SET DATEFORMAT ymd --設定日期格式YYYY/MM/DD DECLARE @dt1 DATETIME SET @dt1='2007/01/17' SELECT DATEPART(dw,@dt1),DATENAME(dw,@dt1) --結果 --該日為星期三,從週一為1開始起算,星期三的數字為3 SET LANGUAGE [Traditional Chinese] --復原設定 --DAY(),MONTH(),YEAR() DECLARE @dt1 DATETIME SET @dt1='2007/01/17' SELECT YEAR(@dt1) '年份', MONTH(@dt1) '月份', DAY(@dt1) '日期' SELECT DATEPART(yyyy,@dt1) '年份', DATEPART(mm,@dt1) '月份', DATEPART(dd,@dt1) '日期'