Изменение формата даты на более короткую дату
У нас есть следующий скрипт:
WITH
SET [Last56Days] as
TAIL ( [Date].[Date - Calendar Month].[Calendar Day].members, 56 )
MEMBER [Measures].[DateValue] as
[Date].[Date - Calendar Month].CURRENTMEMBER.member_value, format_string = "short date"
MEMBER [Measures].[DateValue2] as
[Date].[Date - Calendar Month].CURRENTMEMBER.member_value, format_string = "dd/mm/yyyy"
SELECT
{ [Measures].[DateValue], [Measures].[DateValue2]} ON COLUMNS,
Hierarchize ({ [Last56Days] } ) ON ROWS
FROM [Our Cube]
Это возвращает это:
Могу ли я как-то изменить формат даты, чтобы даты были такими, как "09 Фев 2014", т.е. короче?
2 ответа
Из комментариев я предполагаю, что проблема в том, что у вас есть целочисленные ключи даты и столбец имени, который всегда имеет тип строки в службах аналитики. Они не будут работать с форматами даты, для которых нужны даты (или двойные числа, содержащие дни с 1 января 1900 года, и в виде дроби время дня, то есть 8:30 утра будет 8,5/24).
Таким образом, вы можете использовать
MEMBER [Measures].[Date as int] as
[Date].[Date - Calendar Month].CURRENTMEMBER.Properties('Key0', Typed)
MEMBER [Measures].[Date Year] as
Fix([Measures].[Date as int] / 10000)
MEMBER [Measures].[Date Month] as
Fix(([Measures].[Date as int] - [Measures].[Date Year] * 10000) / 100)
MEMBER [Measures].[Date Day] as
[Measures].[Date as int] - [Measures].[Date Year] * 10000 - [Measures].[Date Month] * 100
MEMBER [Measures].[DateValue] as
// convert it to Date data type and use a format string on that:
DateSerial([Measures].[Date Year], [Measures].[Date Month], [Measures].[Date Day]),
format_string = 'dd/mm/yyyy'
Смотрите документацию Properties
и список функций VBA, таких как Fix
а также DateSerial
,
Глядя на сложность моего кода выше, может быть лучше использовать строковую логику, а не целочисленную логику, то есть опуская typed
аргумент Properties
а затем рассчитать год, месяц и день, используя Left
, Mid
, а также Right
и преобразовать это в целые числа. Но "детали этого оставлены в качестве упражнения для читателя".
Попробуйте с одним из этого формата:
=Format(Fields!myDateTime.Value, "M/d/yy") ... 6/15/09
=Format(Fields!myDateTime.Value, "M/d/yyyy h:mmtt") ... 6/15/2009 2:45PM
=Format(Fields!myDateTime.Value, "MM/dd/yy HH:mm") ... 06/15/09 14:45
=Format(Fields!myDateTime.Value, "MMM d, yyyy") ... Jun 15, 2009
=Format(Fields!myDateTime.Value, "Short Date") ... 6/15/2009
=Format(Fields!myDateTime.Value, "Long Date") ... Monday, June 15, 2009
=Format(Fields!myDateTime.Value, "ddd dd/MM/yyyy") ... Mon 04/04/2011
Ссылка на источник. Надеюсь, поможет
РЕДАКТИРОВАТЬ Я извиняюсь! Я не видел комментарий в конце. В любом случае, я думаю, вы уже видели эту ссылку, но, возможно, вы можете попробовать использовать format_string так:
format_string = "dd/mmm/yyyy"