SSRS 2008正确显示日期日期类型

时间:2009-06-16 16:02:43

标签: sql-server-2008 datetime reporting-services ssrs-2008

我正在使用SQL 2008和SSRS 2008:

CREATE TABLE [dbo].[DimDates](
    [pkDateID] [int] NOT NULL,
    [FullDate] [date] NULL,
    [DayNumberOfWeek] [tinyint] NULL,
    [DayNameOfWeek] [varchar](9) NULL,
    [IsLastDayOfMonth] [char](1) NULL,
    [MonthName] [varchar](9) NULL,
    [CalendarDay] [smallint] NULL,
    [CalendarWeek] [tinyint] NULL,
    [CalendarMonth] [tinyint] NULL,
    [CalendarQuarter] [tinyint] NULL,
    [CalendarYear] [smallint] NULL,
    [FiscalDay] [smallint] NULL,
    [FiscalWeek] [tinyint] NULL,
    [FiscalMonth] [tinyint] NULL,
    [FiscalQuarter] [tinyint] NULL,
    [FiscalYear] [smallint] NULL,
)
GO

CREATE PROCEDURE [dbo].[LookupWeek]
    @StartDateID int = NULL
AS
    IF @StartDateID IS NULL
        SELECT
            dd.pkDateID
            , dd.FullDate
        FROM
            dbo.DimDates dd
        WHERE
            dd.DayNumberOfWeek = 7
            AND dd.FullDate <= GETDATE()
        ORDER BY
            dd.pkDateID DESC
    ELSE
        SELECT
            dd.pkDateID
            , dd.FullDate
        FROM
            dbo.DimDates dd
        WHERE
            dd.DayNumberOfWeek = 7
            AND dd.pkDateID >= @StartDateID
            AND dd.FullDate <= GETDATE()
        ORDER BY
            dd.pkDateID DESC
RETURN 0
GO

我们正在利用上面的sp来填充SSRS报告中的@StartDate和@EndDate。在参数的下拉框中显示FullDate时,会出现问题,它不显示为日期,显示为日期时间,并将12:00:00 AM添加到每一行。

任何想法为什么或如何阻止它?

谢谢,

- 亚伦

2 个答案:

答案 0 :(得分:1)

因为它是一个日期时间对象,你需要在字段(Split(field, " ")(0))上进行拆分或使用DateFormat并提供所需的格式字符串(=FormatDateTime(today, dateformat.shortdate)

它设计在报告中,而不是sql。

或者将文本框上的format属性设置为“d”,表示日期时间短

答案 1 :(得分:0)

我觉得这是一个错误。我也对此感到沮丧。在数据库中,列明确定义为“DATE”,当您在SSRS中创建数据集时,它表示为“DATETIME”。这是完全公牛......为什么他们不能尊重自己产品之间的数据类型。我不想为数据库中的类型定义的东西进行任何花哨的重新格式化。

我希望他们能在R2中解决这个问题,但是,请继续关注。 :(