根据用户提供的日期过滤数据

时间:2013-04-26 10:51:28

标签: sql sql-server tsql reporting-services

我有一个SQL查询,如下所示: -

select *
from dbo.NGPTimesheetsPosition
where ProjectNO = '12169-01-c' AND CreditorEmployeeID <> 'E0000' AND DocType = 'Time Sheet' 

这将返回以下数据:

SSMS output example

我想要做的是只能显示数据,包括用户定义的日期,例如2013年1月2日。

用户定义的日期可以是当月的任何日期。

非常感谢所有帮助或建议。

3 个答案:

答案 0 :(得分:1)

您需要add a parameter to your report,并在数据集查询中使用此参数:

SELECT *
FROM dbo.NGPTimesheetsPosition
WHERE ProjectNO = '12169-01-c' 
      AND CreditorEmployeeID <> 'E0000' 
      AND DocType = 'Time Sheet'
      AND TransactionDate <= @MyDateParameter -- ADDED!

当您声明:

时,您对问题的可能值的问题并不完全清楚
  

用户定义的日期可以是当月的任何日期。

我认为these folks at SqlServerCentral are right:您无法为数据参数设置限制。这为您提供了两个基本选项:

  • 就这样吧。如果需要,您可以在查询中添加AND @MyDateParameter <= CURRENT_TIMESTAMP子句。
  • 使用可用日期填充数据集,并将其用作参数<{li>的available values

答案 1 :(得分:0)

select *
from dbo.NGPTimesheetsPosition
where ProjectNO = '12169-01-c' AND CreditorEmployeeID <> 'E0000' AND DocType = 'Time Sheet'
    and TransactionDate <= '2013-02-01' 

答案 2 :(得分:0)

在你的where子句中进行日期比较,如下所示

Convert( varchar (11) , transactiondate , 101 ) <= '01/02/2013'

相关问题