重写dateadd()函数
来源:互联网 发布:centos7 网络只有桥接 编辑:程序博客网 时间:2024/05/23 01:05
dateadd()函数的语法格式:
dateadd(y[,m,d],int,expression)
在使用dateadd的过程中你会发现,当dateadd()函数的第一个参数为‘m‘时,dateadd()函数只单纯的在月份上加减某个整数值,但是有可能你会遇到这样的的问题,例如:日期是'2009-06-30'(月末)时,只想将该日期推前三个月,即'2009-03-31',此时如果使用dateadd(m,-3,'2009-06-30')函数显然不能达到你的要求,因为每年的三月份是月大,也就是有31天,而在三月份是存在30日的,所以使用dateadd(m,-3,'2009-06-30')得到的结果是'2009-03-30'日,显然跟你想要的结果是有出入的。
要想解决此问题,我们可以采用自定义函数来实现该功能:
create function dtadd(@ymd varchar(2),@count int,@dttime datetime)
returns datetime
as
begin
if @ymd='y'
begin
set @dttime=dateadd(y,@count,@dttime)
end
if @ymd='m'
begin
set @dttime=dateadd(d,-1,dateadd(m,1,substring(convert(varchar(10),dateadd(m,@count,@dttime),23),0,8)+'-1'))
end
if @ymd='d'
begin
set @dttime=dateadd(d,@count,@dttime)
end
return (@dttime)
end
现在进行测试:
select dbo.dtadd('m',-3,'2009-06-30') --注意:调用自定义函数时,必须添加前缀'dbo.',不然调用函数是会提示"'dtadd' 不是可以识别的 函数名。"
返回结果:
2009-03-31
- 重写dateadd()函数
- DateAdd 函数
- DateAdd 函数
- DATEADD()函数
- SQL dateadd datediff函数
- datediff 和 dateAdd函数
- 函数DATEADD用法
- DATEADD() 函数详细说明
- Access的DateAdd 函数
- SQL Server DATEADD() 函数
- SQL Server DATEADD() 函数
- SQL Server DATEADD() 函数
- SQL Server DATEADD() 函数
- SQL Server DATEADD() 函数
- access DateAdd函数
- SQL Server DATEADD() 函数
- SQL Server DateAdd函数
- SQL Server DATEADD() 函数
- SQL Server 2008技术内幕:T-SQL语言基础 笔记
- XML Web服务体系结构GXA的新标准
- js中SetInterval与setTimeout用法
- 普通程序员如何走出困境?
- Hibernate的set排序
- 重写dateadd()函数
- IE零日修补忙 众说纷纭战“极光”
- 十六进制查看器
- office2007安装与输入法有冲突的问题解决办法
- OWASP-CM-003
- 上班族的准妈妈如何均衡营养
- 显示单月的日历的C程序
- 各种Hash函数和代码
- 开篇-WTL头文件列表及简单描述