Sql server 两个日期之间的工作日数-开始日期问题
我需要计算StartDate和EndDate之间的工作日数。我使用下面的方法,虽然效果很好,但我的起始日期必须是表中的“TradeDate”,而不是为起始日期设置的特定日期。如何正确更改“SET@StartDate”以选择表中每条记录的“TradeDate”Sql server 两个日期之间的工作日数-开始日期问题,sql-server,Sql Server,我需要计算StartDate和EndDate之间的工作日数。我使用下面的方法,虽然效果很好,但我的起始日期必须是表中的“TradeDate”,而不是为起始日期设置的特定日期。如何正确更改“SET@StartDate”以选择表中每条记录的“TradeDate” Declare @StartDate DATEtime Declare @EndDate DATEtime SET @StartDate = ? ? ? SET @EndDate = GETDATE() SELECT (DATEDIFF(d
Declare @StartDate DATEtime
Declare @EndDate DATEtime
SET
@StartDate = ? ? ?
SET
@EndDate = GETDATE()
SELECT
(DATEDIFF(dd, @StartDate, @EndDate) -1) -(DATEDIFF(wk, @StartDate, @EndDate) * 2) -(
CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END
) -(
CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END
) as DaysOutstanding,
DealTicketReference,
PortfolioCode
from
tbl
where
StatusId = '1'
and Type = '0'
您可以使用
SELECT
语句:
SELECT (DATEDIFF(dd, TradeDate, @EndDate) -1) -
(DATEDIFF(wk, TradeDate, @EndDate) * 2) -
(CASE WHEN DATENAME(dw, TradeDate) = 'Sunday'
THEN 1 ELSE 0
END) -
(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday'
THEN 1 ELSE 0
END) as DaysOutstanding,
DealTicketReference, PortfolioCode
from tbl
where StatusId = '1' and Type = '0';
如果
StatusId&Type
始终具有数值,则不需要生成文本字符串。只需传递StatusId=1&Type=0
我试过了,但它无法识别TradeDate。错误:列名“TradeDate”无效,但TradeDate绝对是正确的值。示例:交易日期2020-02-04 00:00:00。000@GLOBALJJ. . . 该错误表示在给定的表tbl
中没有TradeDate
。所以,您要确保TradeDate
在表中可用。