0

我正在使用 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 添加到每一行。

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

谢谢,

——亚伦

4

2 回答 2

1

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

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

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

于 2009-06-16T16:05:18.563 回答
0

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

我希望他们在 R2 中修复它,但是,梦想吧。:(

于 2010-07-23T11:59:54.173 回答