-- 1.删除测试用表
IF   OBJECT_ID (N ' Test ' , N ' U ' )  IS   NOT   NULL
     DROP   TABLE  Test

-- 2.建立测试表,并填充测试数据
SELECT   *   INTO  Test 
FROM
(
     SELECT   CONVERT ( DATETIME ,  ' 2008-1-1 ' ,  120 )  AS  dt  UNION   ALL   SELECT   ' 2008-1-15 '   UNION   ALL   SELECT   ' 2008-1-31 '
     UNION   ALL   SELECT   ' 2008-2-1 '   UNION   ALL   SELECT   ' 2008-2-15 '   UNION   ALL   SELECT   ' 2008-2-29 '
     UNION   ALL   SELECT   ' 2007-2-1 '   UNION   ALL   SELECT   ' 2007-2-15 '   UNION   ALL   SELECT   ' 2007-2-28 '
     UNION   ALL   SELECT   ' 2007-4-1 '   UNION   ALL   SELECT   ' 2007-4-15 '   UNION   ALL   SELECT   ' 2007-4-30 '
) T

-- 3.根据日期计算当月有多少天
SELECT   *
     -- 当月天数=32-[(上月最后最后一天+32天)的日期值]
     -- e.g. '2008-1':32-day('2008-2-1') '2008-2':32-day('2008-3-3')
    , ds1 = 32 - DAY (dt - DAY (dt) + 32 )
    
     -- 当月天数=当月最后一天的日期值
     -- e.g. '2008-1':day('2008-1-31') '2008-2':day('2008-2-29')
    , ds2 = DAY ( DATEADD (mm, 1 ,dt) - DAY ( DATEADD (mm, 1 ,dt)))    
    , ds3 = DAY ( DATEADD (mm,  MONTH (dt), dt - DATEPART (dy,dt)))    
    , ds4 = DAY ( DATEADD (d,  - 1 ,  CONVERT ( VARCHAR ( 8 ),  DATEADD (m, 1 ,dt),  120 ) + ' 01 ' ))

     -- 当月天数=本月一号到下月一号的天数差值
     -- e.g. datediff(d, '2008-1-1', '2008-2-1')
    , ds5 = DATEDIFF (d,  DATEADD (dd, 1 - DAY (dt),dt),  DATEADD (mm,  1 ,  DATEADD (dd, 1 - DAY (dt),dt)))
    , ds6 = DATEDIFF (d,  DATEADD (m,  DATEDIFF (m,  0 , dt),  0 ),  DATEADD (m,  datediff (m,  0 , dt) + 1 ,  0 ))
    , ds7 = DATEDIFF (d,  CONVERT ( VARCHAR ( 8 ), dt,  120 ) + ' 01 ' ,  CONVERT ( VARCHAR ( 8 ),  DATEADD (m, 1 ,dt),  120 ) + ' 01 ' )        
from  Test

/**/ /*
dt                      ds1         ds2         ds3         ds4         ds5         ds6         ds7
----------------------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
2008-01-01 00:00:00.000 31          31          31          31          31          31          31
2008-01-15 00:00:00.000 31          31          31          31          31          31          31
2008-01-31 00:00:00.000 31          31          31          31          31          31          31
2008-02-01 00:00:00.000 29          29          29          29          29          29          29
2008-02-15 00:00:00.000 29          29          29          29          29          29          29
2008-02-29 00:00:00.000 29          29          29          29          29          29          29
2007-02-01 00:00:00.000 28          28          28          28          28          28          28
2007-02-15 00:00:00.000 28          28          28          28          28          28          28
2007-02-28 00:00:00.000 28          28          28          28          28          28          28
2007-04-01 00:00:00.000 30          30          30          30          30          30          30
2007-04-15 00:00:00.000 30          30          30          30          30          30          30
2007-04-30 00:00:00.000 30          30          30          30          30          30          30

(12 row(s) affected)
*/

-- 4.删除测试表
DROP   TABLE  Test

根据日期计算当月有多少天相关推荐

  1. js根据给定的日期计算当月有多少天

    这个代码没什么,贴上来,我想表达的重点隐藏在代码中,找找看! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...

  2. JAVA 计算当月有多少天

    1.计算当前月总共的天数 /*** 计算当前月有多少天* * @return*/public int getDays(int year, int month) {int days = 0;if (mo ...

  3. 【Oracle】oracle 计算当月有多少个星期天、星期六、星期一

    -- 当前月有多少个星期天 select case when mod(1 + 7 - to_char(trunc(sysdate, 'MM'), 'D'), 7) + trunc(sysdate, ' ...

  4. java日期的计算(当月剩余天数、获取日期当月的天数)

    日常开发中会遇到关于日期的计算比如:当月的天数.两日期之间的天数.当月剩余天数等等...... 下方为关于日期计算的demo,后期会持续更新... 获取日期当月的天数或某月总天数 /*** 获取日期当 ...

  5. PLSQL计算日期是当月第几周

    网上查询的方法都是这个: SELECT TO_CHAR (p_date, 'W') INTO v_week FROM DUAL; 它实际上是星期N在当月第几次出现. 如本月的第1天是个周四,那么为个月 ...

  6. 根据具体日期计算是一年的第几周和当月的第几周

    根据具体日期计算是一年的第几周: <!DOCTYPE html> <html lang="en"> <head><meta charset ...

  7. JAVA 计算日期属于当月第几周(日期周计算)

    计算日期属于当月第几周(日期周计算) 本文周计算时间方式为:当月第一个周一为第一周 计算 获取月第一个周一.从当月第一天开始找 第一个周一时间与 sourceTime [传入时间对比],sourceT ...

  8. Oracle常用日期计算(年初、月初、本周第一天、当年第几周、当月第几周)

    为方便计算,文中的日期统一使用number类型,如:20220831 一.计算当年年初日期 create or replace function f_get_nc (v_rq in number -- ...

  9. 标 题:[转帖]SQL Server日期计算(收藏)

    分    类:数据库相关 关键字 :日期 相    关:作者:未知    来源:xpilot 的 Blog 引    用:[0]http://goaler.xicp.net/TrackBack.asp ...

最新文章

  1. 十二、springboot 详解RestControllerAdvice(ControllerAdvice)
  2. 设计模式 -- 中介者设计模式 (Mediator Pattern)
  3. VC++实现恢复SSDT
  4. TensorFlow实现案例汇集:代码+笔记
  5. datagridview绑定xml
  6. 百度地图SDK v3.6.0以上版本找不到PoiOverlay类的解决方法
  7. Swift:用UICollectionView整一个瀑布流
  8. udemy下载课程无法播放_最好的Udemy Web开发课程+热门免费课程
  9. ANSI,Unicode,UTF-8网页编码的区别【转】
  10. centos6.5 python2.6.6升级到python2.7.15
  11. Hive的查询结果保存方法
  12. MODIS数据的简介和下载(三)——MODIS数据下载方式(基于MODIS Web Service)
  13. UVA11565 Simple Equations【数学+暴力】
  14. 从狗屁不通文章生成器,到机器写作之路
  15. 请问如何制作中国象棋对弈软件的界面部分?
  16. PS自定义形状+笔刷添加打造完美水印
  17. Thinkphp微信幸运大转盘抽奖实例
  18. python数字加密资产_GitHub - ezpod/crypto-exchange-engine: 数字加密资产交易引擎的原理性实现代码,汇智网提供...
  19. Flutter 实现剑气加载
  20. 第五十四讲 设备树实现RGB驱动

热门文章

  1. 【机器视觉】Halcon 18安装教程
  2. 2021年遭遇苹果审核2.3.1的开发过审经历
  3. 手游开发神器 cocos2d-x editor 教程聚合和代码下载(持续更新中)
  4. 为什么你读专业技术书逐渐焦虑,读不下去书怎么办?
  5. ShardingSphere 分片算法
  6. 点击按钮没反应,或者有时有反应有时没反应
  7. addon@Node.js之新手上路
  8. easyloader [easyui_1.4.2] 分析源码,妙手偶得之
  9. ye lynn yama Loafer 已发送,请注意查收
  10. 帝国时代3如何快速实现训练单位突破人口上限