Какое правильное выражение следует использовать для форматирования даты от «yyyyMMdd» до «M / d / yyyy» в службах отчетов SQL Server? - PullRequest
3 голосов
/ 04 марта 2009

Я получаю даты в своем наборе данных в форме "yyyyMMdd" (т.е. 20080228 означает 28 февраля 2008 г.)

Мне нужно преобразовать их в "M / d / yyyy"

Примеры:

20080228 = 2/28/2008
20080101 = 1/1/2008
20081001 = 10/1/2008
20081212 = 12/12/2008

Какое правильное выражение для обработки этого?

EDIT

Выражение, которое я использовал (ORDDTE в формате "yyyyMMdd" и у меня есть переключатель для испанского или английского формата даты):

=CDate(Mid(First(Fields!ORDDTE.Value, "ReturnTagHeader").ToString(), 5, 2) + "/" + Right(First(Fields!ORDDTE.Value, "ReturnTagHeader").ToString(), 2) + "/" + Left(First(Fields!ORDDTE.Value, "ReturnTagHeader").ToString(), 4)).ToString(IIf(Parameters!Language.Value = "ES", "d/M/yyyy", "M/d/yyyy"))

Ответы [ 8 ]

3 голосов
/ 04 марта 2009

Дайте этому шанс. Вы можете использовать строковые функции. Я предполагаю, что этот input / field / param всегда будет иметь двухзначный месяц и двухзначный день, поэтому вы можете обойтись без этого ... Установите выражение в поле даты следующим образом:

=MID(Fields!ORDDTE.Value.ToString(), 5, 2) 
  + "/" + RIGHT(Fields!ORDDTE.Value.ToString(), 2)
  + "/" + LEFT(Fields!ORDDTE.Value.ToString(), 4)

Вы также можете попробовать сделать что-то вроде этого ... найдено здесь ...

=System.DateTime.ParseExact(Fields!ORDDTE.Value,"dd/MM/yyyy",System.Globalization.DateTimeFormatInfo.InvariantInfo).ToString("yyyyMMdd")
2 голосов
/ 04 марта 2009

Почему бы вам не преобразовать поле в datetime при вызове sql в наборе данных.

Select CAST(DateField AS datetime) As Date FROM DateTable

Тогда для вашего выражения:

=Cdate(Fields!Date.Value).ToShortDateString
2 голосов
/ 04 марта 2009

Попробуйте это:

Format(FieldWhatever,"MM/dd/yyyy")
2 голосов
/ 04 марта 2009

Если вы установите выражение в поле, вы сможете обернуть его в FormatDateTime ()

Пример: formatdatetime(FieldWhatever, 0)

0 должен быть спецификатором для определенного формата, который вы ищете.

1 голос
/ 10 ноября 2010

Это делает вывод, что datevalue приходит к вам как целое число, которое необходимо преобразовать для использования MID ().

DATEVALUE = 20080901 <- ггггМмдд </p>

= Mid (cSTR (DATEVALUE), 5, 2) & "/" & Mid (cSTR (DATEVALUE), 7, 2) & "/" & Mid (cSTR (DATEVALUE), 1, 4)

0 голосов
/ 05 февраля 2012
SUBSTRING((DT_WSTR,30)DATEADD("D",-1,GETDATE()),1,4) + 
SUBSTRING((DT_WSTR,30)DATEADD("D",-1,GETDATE()),6,2) +
SUBSTRING((DT_WSTR,30)DATEADD("D",-1,GETDATE()),9,2)
0 голосов
/ 27 июля 2009

Поздний ответ ...

Почему бы не установить «Язык отчета» на «Пользователь! Язык» как , упомянутый здесь ? Это определяет настройки браузера.

Тогда "d" для короткой даты. При необходимости используйте CDate.

0 голосов
/ 04 марта 2009

Помимо выражений служб отчетов вы также можете отформатировать дату из хранимой процедуры:

select 
    CONVERT(VARCHAR(10), [dateField], 101) as 'date' 
from someTable

Это имеет недостатки в том, что это будет универсальным, и если ваш отчет должен быть интернационализирован, вы будете в невыгодном положении.

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