计算两个时间相差多少年月日的sql算法
2011-06-07 18:03
489 查看
今天在CSDN上看到一个算法问题,描述如下:
如:起始时间 2011-1-1 截止日期 2011-2-1
两个时间比较相差 0年1个月
如:起始时间 2010-11-1 截止日期 2011-12-1
两个时间比较相差 1年1个月
怎么比较才能得出~ 相差多少年 多少个月
这个当然很简单, 一句SQL就可以了:
但是如果连几天也要计算呢?闲着没事自己随便在SQL Server下写了写,store procedures代码如下,应该没可以了:
如果有不正确,可以留言提出。
如:起始时间 2011-1-1 截止日期 2011-2-1
两个时间比较相差 0年1个月
如:起始时间 2010-11-1 截止日期 2011-12-1
两个时间比较相差 1年1个月
怎么比较才能得出~ 相差多少年 多少个月
这个当然很简单, 一句SQL就可以了:
select ltrim(datediff(yy,@dt1,@dt2))+'年'+ltrim(datediff(mm,@dt1,@dt2)%12)+'月'
但是如果连几天也要计算呢?闲着没事自己随便在SQL Server下写了写,store procedures代码如下,应该没可以了:
CREATE PROCEDURE GetDateDiff @fromDate nvarchar(10), @toDate nvarchar(10) AS DECLARE @YearDiff INTEGER DECLARE @MonthDiff INTEGER DECLARE @DayDiff INTEGER DECLARE @ToMonth INTEGER DECLARE @FromDay INTEGER DECLARE @ToDay INTEGER SET @YearDiff = LTRIM(DATEDIFF(yy, @fromDate, @toDate)) SET @MonthDiff = LTRIM(DATEDIFF(mm, @fromDate, @toDate)%12) SET @ToMonth = Month(cast(@toDate as Datetime)) SET @FromDay = Day(cast(@fromDate as Datetime)) SET @ToDay = Day(cast(@ToDate as Datetime)) IF (@ToDay - @FromDay) < 0 BEGIN IF (@ToMonth - 1) = 1 OR (@ToMonth - 1) = 3 OR (@ToMonth - 1) = 5 OR (@ToMonth - 1) = 7 OR (@ToMonth - 1) = 8 OR (@ToMonth - 1) = 10 OR (@ToMonth - 1) = 12 BEGIN SET @DayDiff = 31 + @Today - @FromDay SET @MonthDiff = @MonthDiff -1 END ELSE BEGIN SET @DayDiff = 30 + @Today - @FromDay SET @MonthDiff = @MonthDiff -1 END END ELSE BEGIN SET @DayDiff = @Today - @FromDay END SELECT CAST(@YearDiff AS NVARCHAR(10)) + '年' + CAST(@MonthDiff AS NVARCHAR(10)) + '月' + CAST(@DayDiff AS NVARCHAR(10)) + '日'
如果有不正确,可以留言提出。
相关文章推荐
- javascript 精准计算两个时间间相差多少年月日时分秒
- PHP年龄计算 取得两个时间戳相差的年龄年月日显示
- JAVA中计算两个时间相差多少 天,时,分,秒
- db2 怎么计算两个时间相差多少个月。如2015-10-10 和2014-1-12
- 计算格式为YYYY-MM-DD HH:ii:ss的两个时间,相差多少年、多少月、多少日、多少小时、多少分钟、多少秒?
- 计算两个时间 相差多少时分秒
- oracle 计算两个时间之间的月份差,相差几个星期,相差多少天
- 如何计算两个时间相差多少周年
- 计算两个时间之间相差了多少时间
- 两个字符串形式的时间计算相差多少
- Java比较两个时间相差多少天,多少个月,多少年
- java计算2个时间相差多少年,多少个月,多少天
- 【c++程序】任意给两个日期,计算相差多少天和各自星期几
- js jquery 计算两个时间相差天数
- Java比较两个时间相差多少天,多少个月,多少年
- 输入日期,计算出与当前系统日期相隔多少天(获取系统时间,年月日分别获取,对其进行格式化simpledateformat;输入的日期类似操作)
- Java按自然月计算两个日期相差的年月日
- java实现计算两个日期相差多少月、比较两个日期大小 等常用日期操作
- Python实现计算两个时间之间相差天数的方法
- 计算两个日期之间相差多少天