TSQL формат даты с разницей в «ГГ лет ММ месяцев и ДД дней» - PullRequest
0 голосов
/ 25 июня 2010

Хорошо, это немного странный запрос. Мы пытаемся получить отформатированный оператор «age» в отчете PeopleSoft, он предоставляет построитель на основе «TSQL», который довольно бесполезен. Мы не можем использовать хранимые функции и не можем редактировать весь оператор SQL как одно целое. Все, что мы можем сделать, это сказать поле за полем, что это за формула, тогда инструмент объединит все элементы вместе, чтобы создать запрос.

Итак, учитывая это ограничение, как мы можем получить разницу между двумя датами, которые должны быть отформатированы как хорошо читаемое человеком предложение? например. «14 лет, 3 месяца и 10 дней»

Любые идеи будут с благодарностью.

Ответы [ 2 ]

3 голосов
/ 25 июня 2010

Если вы можете использовать конкатенацию строк, это даст вам количество лет:

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 ...

0 голосов
/ 01 июля 2010

Вы можете использовать любую формулу, которая вам нравится. Вы просто помещаете тип возврата и функцию SQL на вкладку выражения, а затем используете выражение в качестве поля.

...