SQL Server 2008中的日期差异问题 [英] date difference problem in sql server 2008

查看:104
本文介绍了SQL Server 2008中的日期差异问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我只是在SQL中使用DateDiff,即Datediff(Day,fromdate,todate),我得到了一个不错的结果.

我用..

Hello everyone,

I just used DateDiff in sql, i.e Datediff(Day,fromdate,todate) and i got a nice result.

I used ..

Declare @fromdt date
Declare @todt date
set @fromdt=CONVERT(datetime,2012-05-30 ,105)
set @todt =CONVERT(datetime,2012-05-29  ,105)
SELECT datediff(DAY,@fromdt ,@todt )as 'DaysDifference'



它给我的输出为:1

但是当我用..



it gave me output as : 1

but when i used..

Declare @fromdt date
Declare @todt date
set @fromdt=CONVERT(datetime,2012-05-30 ,105)
set @todt =CONVERT(datetime,2012-05-31  ,105)
SELECT datediff(DAY,@fromdt ,@todt )as 'DaysDifference'




它给我的输出为:-1

现在我需要的是无论日期是大于日期还是小于日期,我都只想输出为1 ...请建议我该怎么做?

谢谢&问候,
Krunal Panchal




it gave me output as : -1

now what i need is irrespective of whether the date is greater then from date or lesser then from date i want output as 1 only ...please suggest what should i do??

Thanks & Regards,
Krunal Panchal

推荐答案

您可以使用 ABS [ ^ ]转换... eg

You could use the ABS [^]function to convert...e.g

SELECT ABS(datediff(DAY,@fromdt ,@todt )) AS 'DaysDifference'


使用此查询,我认为它将解决您的问题

use this query i think it will solve your problem

Declare @fromdt datetime
Declare @todt datetime
set @fromdt=CONVERT(datetime,2012-05-30 ,105)
set @todt =CONVERT(datetime,2012-05-31  ,105)
SELECT
(case when datediff(DAY,@fromdt ,@todt ) >0 then datediff(DAY,@fromdt ,@todt ) else abs(datediff(DAY,@fromdt ,@todt )) end)as 'DaysDifference'



如果您不想检查datediffernce是> 0或< = 0,则可以按照解决方案1中的描述使用直接abs()方法.



if you don''t want to check datediffernce is >0 or <=0 then you can use direct abs() method as per describe in solution 1.


这篇关于SQL Server 2008中的日期差异问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆