【问题标题】:SSRS filter between two dates inclusive?包含两个日期之间的 SSRS 过滤器?
【发布时间】:2017-05-24 14:57:08
【问题描述】:

在 2017 年 5 月 18 日和 2017 年 5 月 18 日之间创建了现有数据,当我在 CRM 中以“从”“到”这些日期运行报告时,它不会返回任何数据。接下来在 Microsoft SQL Server Management Studio 中,当我使用上述日期运行查询时,它仍然不返回数据,但是当我在查询中添加时间时,它会返回“2017-05-18 00:00:00.000”之间的所有现有数据和 '2017-05-18 23:59:59.000'

我怎样才能在 SSRS 中解决这个问题,以便它从相同的“开始日期”和相同的“结束”日期返回数据? SSRS 在两个日期之间过滤吗?

SELECT        
    Account.mm_registrationnumber AS CL_Reg_Number, 
    Account.Name, 
    Account.mm_supplierstatus AS Supplier_Status, 
    Account.PrimaryContactIdName AS Primary_Contact, 
    Account.EMailAddress1 AS Email, 
    Account.Telephone1 AS Telephone, 
    mm_address.mm_line1 AS Line1, 
    mm_address.mm_line2 AS Line2, 
    mm_address.mm_line3 AS Line3, 
    mm_address.mm_line4 AS Line4, 
    mm_address.mm_city AS City, 
    mm_address.mm_county AS County, 
    mm_address.mm_postcode AS Postcode, 
    mm_turnover.mm_name AS Signup_Turnover, 
    Account.mm_signupdate AS SignUp_Date, 
    mm_payment.mm_paymenttype AS Payment_Type, 
    mm_payment.mm_paymentstatus AS Payment_Status, 
    mm_payment.mm_vatamount AS Payment_Amount_VAT, 
    mm_payment.mm_paymentamount AS Payment_Amount_Net, 
    Invoice.InvoiceNumber AS Invoice_ID, 
    Invoice.DueDate AS Due_Date, 
    Invoice.CreatedOn AS Created_Date

FROM  Account 
    INNER JOIN mm_payment ON mm_payment.mm_organisation = Account.AccountId 
    INNER JOIN mm_address ON Account.mm_address = mm_address.mm_addressId 
    INNER JOIN mm_turnover ON Account.mm_turnover = mm_turnover.mm_turnoverId 
    INNER JOIN Invoice ON Invoice.AccountId = Account.AccountId

WHERE Invoice.CreatedOn between '2017-05-18 00:00:00.000' and '2017-05-18 23:59:59.000'

【问题讨论】:

    标签: sql reporting-services ssrs-2008 ssrs-2012


    【解决方案1】:

    将您的 CreatedOn 列转换为如下日期:

    WHERE CAST(Invoice.CreatedOn AS DATE) BETWEEN '2017-05-18' AND '2017-05-18'
    

    【讨论】:

    • 有没有办法在 SSRS 中做到这一点?
    • 或者有没有办法对用户从 CRM 报告中选择的任何日期进行上述转换?
    • 是的,只需使用参数,然后用参数的占位符替换日期文字。
    • 我收到此消息从字符串转换日期和/或时间时转换失败?
    • CreatedOn 是一个日期时间字段吗?
    【解决方案2】:

    如果您不需要使用时间,请使用 Cast 将您的 DATETIME 字段转换为 DATE 字段,它将提取该日期的所有记录。

    WHERE Cast(Invoice.CreatedOn as DATE)  between '2017-05-18' and '2017-05-18'
    

    如果您确实需要时间,请将您的日期/时间参数默认为

    =NOW()
    

    它会在参数中显示时间。

    【讨论】:

    • 有没有办法在 SSRS 中做到这一点?
    • 我怎样才能在每个日期都这样做,而不仅仅是'2017-05-18'
    • 将 '2017-05-18' 更改为 @StartDate 并将下一个更改为 @EndDate。
    • 我收到此消息从字符串转换日期和/或时间时转换失败。
    • 您能否更新您的帖子以显示来自数据集的数据样本,其中包含 NO WHERE 子句。然后是报告设计的屏幕截图。最后发布您的数据集查询。这应该很简单,因此您必须做一些基本错误的事情,但没有看到您在做什么,这很难提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2021-09-03
    相关资源
    最近更新 更多