dyear = year(dateadd("m",0,now()))
dmonth = month(dateadd("m",0,now()))
downlimit = CDate(dyear & "-" & dmonth & "-" & "1")'某月的每一天
uplimit = dateadd("m",1,downlimit)-1 '某月的最后一天
接下来我想就不用我说了吧?
dmonth = month(dateadd("m",0,now()))
downlimit = CDate(dyear & "-" & dmonth & "-" & "1")'某月的每一天
uplimit = dateadd("m",1,downlimit)-1 '某月的最后一天
接下来我想就不用我说了吧?
downlimit = dyear & "-" & dmonth & "-" & "1"
一个月中的天数和年份有关,所以我的做法是月份加1再加去一天,得到的就是该月的天数。
下面是用ORACLE PL/SQL给出的代码,你把它翻译成T-SQL的就行了--Y YEAR(NUMBER)
--M MONTH(NUMBER)
SELECT TO_NUMBER(TO_CHAR
(TO_DATE((TO_CHAR(DECODE(M, 12, Y+1, Y), '0000') || '-'
|| TO_CHAR(DECODE(M, 12, 1, M+1),'00') || '-01',
'YYYY-MM-DD') - 1), 'MM'))
FROM DUAL;
datFirst = CDate(DatePart("yyyy", datCurrent) & "-" _
& DatePart("m", datCurrent) & "-01")
2、通过当前月的一号得到上月一号 DateAdd("m", 1, datFirst),两个日期求间隔
intDays = DateDiff("d", datFirst, DateAdd("m", 1, datFirst))
declare @iDays int
declare @dt varchar(50)
set @dt='2001-2-12'select @iDays=day(dateadd(d,-Day(dateadd(m,1,convert(datetime,@dt))),dateadd(m,1,convert(datetime,@dt))))
print @iDays
现有表结构如下:
n_year n_month number
2001 8 21
2001 8 41
2001 9 30
怎样得到下面的结果呢?
n_month number lever
8 62 2
9 30 1
其中:
lever 为每月汇总后的number与该月的天数之比。
请问该怎么写SQL语句呢?最好是一句话就能出结果?
天的日期,再加1,就可以得出该月的总天数了,例如:SQL> select last_day(to_date('2001-2-1','yyyy-mm-dd'))-to_date('2001-2-1','yyyy-mm-dd')+1 total_days from dual;TOTAL_DAYS
----------
28