TSQL仅在另一个日期字段是前一个工作日时才拉取数据

TSQL仅在另一个日期字段是前一个工作日时才拉取数据,sql,sql-server,tsql,Sql,Sql Server,Tsql,1)如果openddate的日期等于PrevBiz日期,我只需要提取数据。我认为where/and语句应该是Openddate=PrevBiz,但不确定。这对我不起作用,可能是因为日期格式不匹配。有什么建议吗 DECLARE @TODAY DATE = GETDATE() DECLARE @PREVFIRST CHAR(8) = CONVERT(CHAR(8), DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1,

1)如果openddate的日期等于PrevBiz日期,我只需要提取数据。我认为where/and语句应该是
Openddate=PrevBiz
,但不确定。这对我不起作用,可能是因为日期格式不匹配。有什么建议吗

   DECLARE @TODAY       DATE    = GETDATE()
    DECLARE @PREVFIRST  CHAR(8) = CONVERT(CHAR(8), DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0), 112)
DECLARE @PREVLAST   CHAR(8) = CONVERT(CHAR(8), DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), -1), 112) 
        DECLARE @PREVBIZ    CHAR(12) = DATEADD(DAY, CASE DATENAME(WEEKDAY, CONVERT(CHAR(12), @TODAY,112))
                            WHEN 'SUNDAY' THEN -2
                            WHEN 'MONDAY' THEN -3
                            ELSE -1 END, DATEDIFF(DAY, 0, CONVERT(CHAR(12), @TODAY, 112)))

          SELECT TOP 10
          CURRENTDATE       =@TODAY, 
          FIRST_OF_MONTH    =@PREVFIRST,
          LASTDAY_OFMONTH   =@PREVLAST,
          PREVBIZ           =@PREVBIZ,

           DATEADD(DAY, CASE DATENAME(WEEKDAY, CONVERT(DATE, @TODAY,101))
            WHEN 'SUNDAY' THEN -2
            WHEN 'MONDAY' THEN -3
            ELSE -1 END, DATEDIFF(DAY, 0, CONVERT(DATE, @TODAY, 101))) AS PREVIOUSBIZDATE,

          OpendDate 

          FROM [USBI_DW].[USBI].[vw_NameAddressBase]
          where IsCurrent = 1
以下是我的结果:

希望您的视图包含int-date属性(因为特定于DateWarehouse)

希望您的视图包含int-date属性(因为特定于DateWarehouse)

declare @TODAY datetime   = convert(date,GETDATE())
declare @PREVBIZ   datetime =  DATEADD(DAY, CASE DATENAME(WEEKDAY,@TODAY)
                            WHEN 'SUNDAY' THEN -2
                            WHEN 'MONDAY' THEN -3
                            ELSE -1 END,@TODAY)
declare @iToday int = convert(nvarchar(8),@TODAY, 112)
      , @iPrevBiz int = convert(nvarchar(8),@PREVBIZ, 112)

select top 10
      CURRENTDATE       =@iToday,
      PREVBIZ           =@iPrevBiz,
      OpendDate 

from [USBI_DW].[USBI].[vw_NameAddressBase]
where IsCurrent = 1
and OprendDate = @iPrevBiz