SQL Server 2008中的日期差异问题 [英] date difference problem in 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屋!