我正在使用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添加到每一行。
任何想法为什么或如何阻止它?
谢谢,
- 亚伦
答案 0 :(得分:1)
因为它是一个日期时间对象,你需要在字段(Split(field, " ")(0)
)上进行拆分或使用DateFormat并提供所需的格式字符串(=FormatDateTime(today, dateformat.shortdate)
)
它设计在报告中,而不是sql。
或者将文本框上的format属性设置为“d”,表示日期时间短
答案 1 :(得分:0)
我觉得这是一个错误。我也对此感到沮丧。在数据库中,列明确定义为“DATE”,当您在SSRS中创建数据集时,它表示为“DATETIME”。这是完全公牛......为什么他们不能尊重自己产品之间的数据类型。我不想为数据库中的类型定义的东西进行任何花哨的重新格式化。
我希望他们能在R2中解决这个问题,但是,请继续关注。 :(