2016-04-25 2 views
0

СТАВКИ/Visual Studio 2005Формат даты запроса SSRS и форматы даты параметра различаются?

Привет, я имел взгляд через SO Вопросы и не могу найти ответ. Я уверен, что там где-то есть.

Это похоже на простую проблему, но я пробовал ряд вариантов, но не могу найти решение!

Простой Dataset: «DateRange», чтобы дать мне дд/мм/гггг ч: млн: сс формат, такой как

FromDate     ToDate 
2016-04-24 00:00:00.000 2016-04-25 23:59:59.997 

select (CAST(FLOOR(CAST(dateadd(d,-1,getdate()) AS FLOAT)) AS DATETIME)) AS 'FromDate', 
DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd, -1, getdate()), 0)) as 'ToDate' 

Затем я использую FromDate и Todate в качестве параметров в отчете как значения по умолчанию. Однако они затем отображаются в поле параметров как «mm/dd/yyyy hh: mn: ss» формат!

Моя настройка панели управления - английский. Это работает в Visual Studio «Предварительный просмотр», но падает на развертывание, поскольку дата не распознается! Какие-либо предложения??

+0

Я понимаю, что формат даты на панели параметров исправлен в этом ужасном американском формате, и нет никакого способа обойти его. –

ответ

1

Каждый отчет имеет свои собственные настройки локализации. На панели «Свойства» для отчета вы увидите свойство Language в разделе «Локализация». Вы можете установить его на en-GB, который должен решить вашу проблему. Однако я обычно устанавливаю его в =User!Language, чтобы использовать региональные настройки пользователя.

Редактировать

Так что не работает, давайте преобразуем в военной формат даты (все элементы в нисходящем порядке величины - год, месяц, день, час и т.д.) в виде строки, и пусть приложение преобразуйте его обратно в дату. Этот формат является наиболее надежным способом передачи даты вокруг, чтобы избежать региональных проблем:

select CONVERT(VARCHAR(23), (CAST(FLOOR(CAST(dateadd(d,-1,getdate()) AS FLOAT)) AS DATETIME)), 121) AS 'FromDate', 
CONVERT(VARCHAR(23), DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd, -1, getdate()), 0)), 121) as 'ToDate' 
+0

Спасибо @ChisLatta. Я уже пытался установить язык на английский, но это не имело никакого значения. Я также попробовал ваше предложение '= User! Language', но не повезло и там! – MiguelH

0

Единственным решением, которое я мог работать в доступное время было установить параметр SSRS в виде строки и преобразовать дату к строка следующим образом:

select distinct left(convert(varchar, (CAST(FLOOR(CAST(dateadd(d,-1,mydate) AS FLOAT)) AS DATETIME)),120),30) as FromDate, 
left(convert(varchar, DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd, -1, mydate), 0)),120),30) as ToDate 
from mydb 
order by fromdate desc 

Параметр затем CAST как дата в запросе. На самом деле немного беспокоиться!

Смежные вопросы