Six days thou shalt work, but on the seventh day thou shalt rest.
The idea that you should rest on the seventh day is a central concept in both Christianity and Judaism. But which weekday is the seventh day of the week? And which day is the first?
The old texts of the Abrahamic religions clearly consider the Sabbath – Saturday – as the seventh day of the week. This day is also still today the resting day for Jews around the world. The same texts also describe how Adam was created on the sixth day, which is one of the reasons why Friday is the day of congregation and prayers for Muslims.
Hence, these two religions agree on the numbering of week days: Friday is the sixth day of the week and Saturday is the seventh.
However, in the rest of the world, the situation is more confusing: Although Sunday is observed as resting day in most countries, there is a disagreement on whether Sunday is the first or the seventh day of the week. In North America, Sunday is the first day of the week, but in many European countries it is the last day of the week. According to the International Organization for Standardization (ISO 8601), the week starts on a Monday, and Sunday is thus the seventh and last day of the week.
How weekdays are ordered makes a difference in all Business Intelligence applications, most notably in how list boxes and charts are sorted. Note the order of the week days in the list boxes below. In the left one, Sunday is on top of the list and in the right one it is Monday.
This difference can also be seen in calendar displays, used in many types of software and on many sites in the web. Again, note the order of the week days.
QlikView uses ISO 8601 to define the week days and the week start. WeekDay() returns the name of the week day (as defined in the variable DayNames) and a number from 0 to 6; Monday being day number 0. WeekStart() returns the date of the Monday immediately before the date supplied as parameter.
If you want redefine this, e.g. if you want QlikView to show Sunday as the first day of the week – here’s how you do it:
Start by creating a variable that defines the beginning of the week:
SetvCal_FD = 6; // First Day of the week (0=Mon, 1=Tue, ... , 6=Sun)
The WeekStart() function has an offset parameter, and if you use your variable here, you can redefine how the function works and get the week start on the correct day:
WeekStart( Date, 0, $(vCal_FD) ) asWeekStart
The WeekDay() function, however, cannot take any offset parameter, so you need to define the week day using the Dual() function:
Dual( WeekDay( Date ), Mod( WeekDay( Date - $(vCal_FD) ), 7 ) +1 ) asWeekDay
Using these two expressions in your Master Calendar instead of the standard function calls, you can redefine the week start to any of the week days.