У меня есть эта функция, которая показывает годы, месяцы и дни между датами. В таблице просмотра у меня есть данные с датами начала и окончания. Как можно интегрировать эту функцию в мою таблицу представлений?SQL function in view table
USE [DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter FUNCTION [db].[GetDateDifference]
(
@FromDate DATETIME, @ToDate DATETIME
)
RETURNS
@DateDifference TABLE (
YEAR INT, MONTH INT, DAYS INT)
AS
BEGIN
DECLARE @Years INT, @Months INT, @Days INT, @tmpFromDate DATETIME
SET @Years = DATEDIFF(YEAR, @FromDate, @ToDate)
- (CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, @FromDate, @ToDate),
@FromDate) > @ToDate THEN 1 ELSE 0 END)
SET @tmpFromDate = DATEADD(YEAR, @Years , @FromDate)
SET @Months = DATEDIFF(MONTH, @tmpFromDate, @ToDate)
- (CASE WHEN DATEADD(MONTH,DATEDIFF(MONTH, @tmpFromDate, @ToDate),
@tmpFromDate) > @ToDate THEN 1 ELSE 0 END)
SET @tmpFromDate = DATEADD(MONTH, @Months , @tmpFromDate)
SET @Days = DATEDIFF(DAY, @tmpFromDate, @ToDate)
- (CASE WHEN DATEADD(DAY, DATEDIFF(DAY, @tmpFromDate, @ToDate),
@tmpFromDate) > @ToDate THEN 1 ELSE 0 END)
INSERT INTO @DateDifference
VALUES(@Years, @Months, @Days)
RETURN
END
и вот мой вид таблицы:
USE [DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter VIEW [db].[View_ServiceTickets]
AS
SELECT TOP 99
ServiceTicketDate,
BillingDate as 'Project Finished',
InspectionScheduleDate
FROM tblServiceTicket INNER JOIN
tblServiceTicketReport on tblServiceTicket.ServiceTicketID = tblServiceTicketReport.ServiceTicketID
where ServiceTicketDate > '2016'
order by ServiceTicketDate desc
GO
Спасибо большое
Я добавил тег SQL Server код, как представляется, использовать эту базу данных. –
Вы знаете, это может быть достигнуто даже на стороне клиента. Какова цель вычисляемых значений? –
@ Иван Старостин Мне нужно это для отчета Excel. –