2014-10-23 5 views
0

Все, У меня есть вопрос, который натолкнул меня на день и не мог понять. Я ищу формулу в SSRS Expression, которая сообщит мне, что означает дата первого дня первой недели ISO текущего года.
Для примера:Выражение SSRS Первый день первой недели текущего года

  • 2014 даст: 12/30/2013. Причиной этого было бы то, что первая неделя ИСО 2014 года - с (12/30/2013) - (01/05/2014).
  • 2013 даст: 12/31/2012

Я был бы признателен за любую помощь, кто? Спасибо,

ответ

2

Вы можете использовать эту функцию:

Public Function dtFirstDayOfISOYear(ByVal intYear As Integer) as Datetime 

    'the first week of a ISO year is the week that contains the first Thursday of the year (and, hence, 4 January) 
    Dim intDayOfWeek As Integer = CInt(New DateTime(intYear, 1, 4).DayOfWeek) 

    'ISO weeks start with Monday 
    If intDayOfWeek < DayOfWeek.Monday Then intDayOfWeek = intDayOfWeek + 7 

    Return DateAdd(DateInterval.Day, -intDayOfWeek + 1, New DateTime(intYear, 1, 4)) 

End Function 

И называют это с помощью выражения вроде этого:

=Code.dtFirstDayOfISOYear(2014) 

Вы также можете использовать автономный Expression так:

=DateAdd("d", (-1) * (CInt(New DateTime(2014, 1, 4).DayOfWeek) + IIf(CInt(New DateTime(2014, 1, 4).DayOfWeek) < DayOfWeek.Monday, 7, 0)) + 1, New DateTime(2014, 1, 4)) 
Смежные вопросы