• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于日期天数计算的几个函数!_sqlserver

sqlserver 搞代码 7年前 (2018-06-16) 94次浏览 已收录 0个评论

关于日期天数计算的几个函数!
今天早上突然要用到一个计算某月有多少天的函数,翻了半天没找到系统自带着中函数,于是动手写了一个,如下:

**返回某个月有多少天FUNCTION HowMonthDay()   PARAMETERS cDate   LOCAL Days as Integer ,Years as Integer    IF !TYPE(“cDate”)==”D”      MESSAGEBOX(“参数类型不正确,应该为日期型”,”系统提示!”)      RETURN    ENDIF       Days=IIF(INLIST(MONTH(cDate),1,3,5,7,8,10,12),31,30)   **闰年计算方法   Years=YEAR(cDate)   IF MONTH(cDate)==2      Days = IIF(Years%400==0 OR (Years%4==0 AND Years%100<>0),29,28)   ENDIF    RETURN DaysENDFUNC  

后来郑宇大哥给我提供了一个返回月底的函数。如下:

http://www.gaodaima.com/35229.html关于日期天数计算的几个函数!_sqlserver

PROCEDURE EDOM* FUNCTION: 返回本月月底* M.L.Y 1998.8.8PARAMETERS DATE_TODAYPRIVATE ALLSET DATE TO ANSISET CENTURY ONIF MONTH(DATE_TODAY) < 12    RETURN CTOD(STR(YEAR(DATE_TODAY),4,0) + “.” ;              + STR(MONTH(DATE_TODAY)+1,2,0) + “.01”) – 1ELSE    RETURN EDOY(DATE_TODAY)ENDIF
思量了半天发现返回月底可能还要简单一点,我改进了一下:

cDate=Date()

??cDate+(32-DAY(cDate))-DAY(cDate+(32-DAY(cDate)))

最后用这个思路改进了一下返回某月有多少天的函数,如下:

FUNCTION HowMonthDay()   PARAMETERS cDate   LOCAL Days as Integer    IF !TYPE(“cDate”)==”D”      MESSAGEBOX(“参数类型不正确,应该为日期型”,”系统提示!”)      RETURN    ENDIF       Days=DAY(cDate+(32-DAY(cDate))-DAY(cDate+(32-DAY(cDate))))   RETURN DaysENDFUNC  

其实最重要的只有一句:Days=DAY(cDate+(32-DAY(cDate))-DAY(cDate+(32-DAY(cDate))))也不用管闰年平年了,省事。

要是返回月底,那这句改为:cDate+(32-DAY(cDate))-DAY(cDate+(32-DAY(cDate))) 即可

原理就是根据增加值来计算当月的下一个月超出几天,然后减去几天就是当月的最后一天了。

欢迎大家阅读《关于日期天数计算的几个函数!_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于日期天数计算的几个函数!_sqlserver

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址