TSQL格式的日期差异为“YY年MM月和DD天”

时间:2010-06-25 01:28:36

标签: tsql datetime formatting peoplesoft

好的,这是一个奇怪的请求。我们正试图在PeopleSoft的报告中提供格式化的“年龄”声明,它提供了一个基于“TSQL”的构建器,这是相当无用的。我们不能使用存储的函数,我们不能将整个SQL语句编辑为一件事。我们所能做的只是按字段说出公式是什么,然后工具将所有元素连接在一起以产生查询。

因此,鉴于这种限制,我们如何才能将两个日期之间的差异格式化为一个很好的人类可读句子 例如。 “14年3个月10天”

非常感谢任何想法。

2 个答案:

答案 0 :(得分:3)

如果您可以使用字符串连接,这将为您提供年数:

DATEDIFF(yy, t.startdate, t.enddate) 

这将为您提供月份:

DATEDIFF(mm, 
         DATEADD(yy, 
                 DATEDIFF(yy,  
                          t.startdate, 
                          t.enddate), 
                 t.startdate), 
         t.enddate)

这会给你几天的价值:

DATEDIFF(dd, 
         DATEADD(mm, 
                 DATEDIFF(mm, 
                          DATEADD(yy, 
                                  DATEDIFF(yy, 
                                           t.startdate, 
                                           t.enddate), 
                                  t.startdate), 
                          t.enddate), 
                          DATEADD(yy, 
                                  DATEDIFF(yy, 
                                           t.startdate, 
                                           t.enddate), 
                                  t.startdate)), 
         t.enddate)

您可以在see & test using this saved query上发布StackExchange Data Explorer。它使用Azure,使用TSQL ...

答案 1 :(得分:0)

您可以使用您喜欢的任何公式。您只需将返回类型和SQL函数放在表达式选项卡中,然后将表达式用作字段。