преобразование даты в поле параметра SQL в отчетах Crystal

У меня есть отчет Crystal (версия XI r3), который использует объект команды SQL для извлечения своих данных. В объекте команды у меня есть параметр для даты. В моей базе данных используются поля «дата», хранящиеся в виде числовых значений в формате ГГГГММДД, поэтому я указал параметр как числовой и добавил подсказку «введите дату в формате ГГГГММДД».

Моих пользователей это мало волнует; они хотят иметь возможность использовать средство выбора даты и/или иметь возможность вводить дату в формате ММ/ДД/ГГГГ.

Мои исследования до сих пор привели меня к мысли, что если я преобразую параметр в истинный тип данных даты, я не смогу использовать его в объекте команды SQL, потому что я не могу преобразовать его из даты в число в операторе SQL, поэтому мне пришлось бы управлять диапазоном дат в мастере выбора кристаллов, а не в операторе SQL, что могло бы замедлить мой отчет на порядок или два (поскольку я нажимаю на таблицу который индексируется этим полем даты и имеет много записей в день).

Я ошибся? Есть ли способ позволить пользователю вводить дату в формате ММ/ДД/ГГГГ и по-прежнему иметь возможность использовать ее в качестве числового параметра ГГГГММДД в ​​моем объекте команды SQL?


person Hellion    schedule 20.04.2012    source источник
comment
Почему вы не можете преобразовать дату в число в операторе SQL? Какую БД вы используете?   -  person Ryan    schedule 20.04.2012


Ответы (1)


Боюсь, вам придется изменить исходную команду, чтобы заменить числовой параметр параметром даты и выполнить преобразование даты в число в самой команде.

Итак, внутри команды:

WHERE MyDate = {?MyNumberParam)

станет:

WHERE MyDate = (YEAR({?MyDateParam})*10000) + (MONTH({?MyDateParam})*100) + DAY({?MyDateParam})

Последняя часть преобразует 20 апреля 2012 года в (2012 * 10000 + 4 * 100 + 20) = 20120420, что, я думаю, вам и нужно.

person MartW    schedule 20.04.2012
comment
Спасибо, добрый сэр. Я понятия не имею, откуда у меня сложилось впечатление, что я не могу использовать функции преобразования даты SQL в полях параметров даты Crystal, но это заблуждение, по-видимому, лежало в основе моей дилеммы. - person Hellion; 20.04.2012