>  기사  >  데이터 베이스  >  经典SQL自定义函数

经典SQL自定义函数

WBOY
WBOY원래의
2016-06-07 16:22:511139검색

1、确定某年某月有多少天 实现原理:先利用DATEDIFF取得当前月的第一天,再将月份加一取得下月第一天,然后减去1分钟,再取日期的 天数部分,即为当月最大日期,也即当月天数 CREATE FUNCTION DaysInMonth ( @date datetime ) Returns int AS BEGIN RETURN D

  1、确定某年某月有多少天

  实现原理:先利用DATEDIFF取得当前月的第一天,再将月份加一取得下月第一天,,然后减去1分钟,再取日期的

  天数部分,即为当月最大日期,也即当月天数

  CREATE FUNCTION DaysInMonth ( @date datetime ) Returns int

  AS

  BEGIN

  RETURN Day(dateadd(mi,-3,DATEADD(m, DATEDIFF(m,0,@date)+1,0)))

  END

  调用示例:

  select dbo.DaysInMonth ('2006-02-03')

  (2)计算哪一天是本周的星期一

  SELECT DATEADD(week, DATEDIFF(week,'1900-01-01',getdate()), '1900-01-01') --返回2006-11-06 00:00:00.000

  或

  SELECT DATEADD(week, DATEDIFF(week,0,getdate()),0)

  (3)当前季度的第一天

  SELECT DATEADD(quarter, DATEDIFF(quarter,0,getdate()), 0)—返回2006-10-01 00:00:00.000

  (4)一个季度多少天

  declare @m tinyint,@time smalldatetime

  select @m=month(getdate())

  select @m=case when @m between 1 and 3 then 1

  when @m between 4 and 6 then 4

  when @m between 7 and 9 then 7

  else 10 end

  select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'

  select datediff(day,@time,dateadd(mm,3,@time)) —返回92

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.