Передача параметров даты в Oracle Query в SSRS - PullRequest
1 голос
/ 04 августа 2009

У меня есть отчет SSRS, который использует источник данных Oracle. У меня есть запрос;

select * from myTable t where
t.date between Date '2009-08-01' and Date '2009-08-04' + 1

Этот запрос работает как в Oracle, так и из SSRS. Он получает все строки из myTable, когда столбец t.date находится между 08.01.2009 и 08.04.2009. Столбец t.date имеет тип Date ()

Теперь я хочу, чтобы даты были параметрами. Поэтому я изменил запрос на:

select * from myTable t where
t.date between Date :myDate and Date :myDate + 1

Когда я запускаю этот запрос в SSRS, он предлагает ввести значение для: myDate.

Я пробовал 2009-08-01, '2009-08-01', оба результата приводили к ошибке обработки Oracle SQL: «Отсутствует выражение».

Есть идеи?

Ответы [ 5 ]

2 голосов
/ 05 августа 2009

Если вы настаиваете на наличии одного параметра (: myDate), использование предложения with может сделать процесс немного чище. Я не знаком с синтаксисом, который у вас есть в вашем примере (то есть «Дата», как приведение в запросе), ниже приведена реализация только для SQL.

with
 select TRUNC(TO_DATE(:mydate, 'yyyy-mm-dd')) p_date from dual as parameters
select t.* 
from 
  myTable t, 
  parameters 
where
  trunc(t.date) between parameters.p_date and parameters.p_date + 1
1 голос
/ 25 февраля 2012

Это сработало для меня, используя SSRS:

SELECT t.* 
FROM   myTable t 
WHERE  t.date between :myDate AND to_date(:myDate + 1)
1 голос
/ 05 августа 2009

Только то, что вы использовали: myDate дважды не означает, что они одинаковы. Они являются заполнителями, и, поскольку у вас есть два заполнителя, вам нужно два значения.

0 голосов
/ 24 августа 2015

У меня была похожая проблема с гораздо большим запросом, и я обнаружил, что это просто поиск и замена, например, : mydate с TO_DATE (: mydate) было достаточно для решения проблемы - одна и та же дата передавалась каждому экземпляру TO_DATE (: mydate) в запросе.

Если вы хотите, чтобы диапазон дат передавался в запросе, я бы присвоил параметрам разные имена, например, : StartDate и: EndDate в SQL и имеют отдельные параметры @StartDate и @EndDate в отчете. Это делает SQL намного понятнее.

0 голосов
/ 05 августа 2009

Вы пытались убедиться, что параметр является типом DateTime (по умолчанию это строка) в меню Параметры отчета?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...