0

好的,这是一个奇怪的要求。我们正在尝试在 PeopleSoft 的报告中生成一个格式化的“年龄”声明,它提供了一个基于“TSQL”的构建器,这非常无用。我们不能使用存储函数,也不能将整个 SQL 语句作为一个东西来编辑。我们所能做的就是逐个字段地说出公式是什么,然后该工具会将所有元素连接在一起以生成查询。

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

任何想法将不胜感激。

4

2 回答 2

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)

您可以使用我在StackExchange Data Explorer上发布的已保存查询来查看和测试。它使用 Azure,使用 TSQL ...

于 2010-06-25T01:54:09.130 回答
0

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

于 2010-07-01T14:21:10.790 回答