sqlserver获取某个月多少天
发布时间:2020-12-12 12:50:42 所属栏目:MsSql教程 来源:网络整理
导读:day()函数是获取某个时间的天数,参数必须是日期字段类型 1、当数据字段类型是int时,且是某月的第一天 思路:获取到某月的最后一天,即下个月第一天的前一天日期,用day()函数取到天数 例如 m_date=20150201? 首先转换成字符型: convert(varchar(8),m_date
day()函数是获取某个时间的天数,参数必须是日期字段类型 1、当数据字段类型是int时,且是某月的第一天 思路:获取到某月的最后一天,即下个月第一天的前一天日期,用day()函数取到天数 例如 m_date=20150201? 首先转换成字符型: convert(varchar(8),m_date+100,112) 其中:加100是取下个月的第一天,112代表yyyymmdd格式的日期 然后转换成日期型: cast(convert(varchar(8),112) as datetime);//下个月的第一天 cast(convert(varchar(8),112) as datetime)-1;//下个月的第一天的前一天 然后就可以用day()函数了: day(cast(convert(varchar(8),112) as datetime)-1) 到这里,需要解决一个BUG,那就是当m_date=20141201时,转换成日期时会报错,因为没有20141301的日期,所以需要特殊处理一下,将20141201+8900=20150101 假设有个记录月份的字段m_month,可以这么写: case when m_month=12 then day(cast(convert(varchar(8),m_date+8900,112) as datetime)-1) else day(cast(convert(varchar(8),112) as datetime)-1) 2、当数据字段类型是int时,任意一天时间 思路:同上,即获取到某月的最后一天,即下个月第一天的前一天日期,用day()函数取到天数 例如 m_date=20150204 day(cast(convert(varchar(8),(m_date-m_date%100+1+100),112) as datetime)-1) 这个也要根据月份特殊处理一下,此处不给答案了 3、当有2个数据字段类型是int时,一个是年,一个是月份 day(cast(CAST(m_year as varchar(4))+'-'+CAST(m_month+1 as varchar(2))+'-01' as datetime)-1) 这个也要根据月份特殊处理一下,此处不给答案了 4、获取当前日期的月天数 SELECT 32-DAY(getdate()+32-DAY(getdate())) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容