我需要得到两个日期之间的结果如下:- SQL服务器
DATE_START = 01/01/2010
DATE_END = 2012年10月21日
结果:1年,9数月和20天。
我试了下面的代码,但它没有奏效。它有时会返回负值日期:
SELECT CAST(DATEDIFF(yy, date_start, date_end) AS varchar(4)) +' year '+
CAST(DATEDIFF(mm, DATEADD(yy, DATEDIFF(yy,date_start , date_end), date_start), date_end) AS varchar(2)) +' month '+
CAST(DATEDIFF(dd, DATEADD(mm, DATEDIFF(mm, DATEADD(yy, DATEDIFF(yy, date_start, date_end), date_start), date_end), DATEADD(yy, DATEDIFF(yy, date_start, date_end), date_start)), date_end) AS varchar(2)) +' day' AS result
谢谢!
你确定预期的结果为1年9个月或2岁9个月 –
,做你想要什么,如果开始日期是'2010-01-19'得到的时间差或'2010-01-21'? –
无论您如何得到结果,请注意您对输出所做的事情。请记住,一个月不是一个精确的时间单位。如果你的用户知道其中的一点,比如“从现在开始的三个月”或“三个月前”,那很好。但没有一个参考点,一个“月”是毫无意义的。 –