【发布时间】:2020-05-27 17:36:50
【问题描述】:
我正在尝试创建一个 SSRS 报告,该报告允许用户除日期外还按时间范围搜索工作订单。例如:从 2020 年 5 月 1 日至 2020 年 5 月 27 日下午 5:00 之间发生的请求。和晚上 7:00下面是我在 SSMS 2016 中的存储过程,我注释掉了时间参数,因为它们不起作用。这会产生我需要的未精炼数据并且日期参数有效,这是我遇到问题的时间参数。
@STARTDATE DATE,
@ENDDATE DATE
--@STARTTIME TIME,
--@ENDTIME TIME
AS
SELECT
[PROBLEMCODE]
,FORMAT([DATETIMEINIT], 'yyyy-MM-dd') AS 'DATE'
,FORMAT([DATETIMEINIT], 'hh:mm tt') AS 'TIME'
,[STATUS]
FROM [Cityworks].[azteca].[REQUEST]
WHERE REQCATEGORY IN ('WATER', 'SEWER')
AND [DATETIMEINIT] BETWEEN @STARTDATE AND @ENDDATE
--AND FORMAT([DATETIMEINIT], 'HH:mm') BETWEEN @STARTTIME AND @ENDTIME;
这是我第一次发帖,所以我希望所有这些都有意义!感谢您的帮助!
【问题讨论】:
-
为什么要在
SELECT中格式化结果?这就是表示层(此处为 SSRS)的用途。此外,如果您想将日期和时间数据类型与日期和时间数据类型进行比较,只需进行比较即可:AND DATETIMEINIT >= @StartTime AND DATETIMEINIT < @EndTime -
我是一个新的 SQL 用户,所以我仍在学习查询与 SSRS 的区别。当我运行您提供的比较时,我收到此错误“数据类型日期时间和时间在大于或等于运算符中不兼容。”当我使用 BETWEEN 时,我没有收到错误,但它也没有做任何事情。将参数从程序中取出并在 SSRS 上设置会更好吗?
-
这没有意义,你有一个名为
DATETIMEINIT的列,所以它必须是datetime/datetime2/datetimeoffset,然后是你的两个参数被声明为date。这些数据类型不会出现该错误 -
你是对的,它设置为日期时间,但是当我取消注释时间参数时,我得到了那个错误。我在 BETWEEN 上弄错了,它给了我同样的错误。
标签: sql sql-server sql-server-2016