UK Bank Holidays

Date posted: Post reading time: 12 minutes

In the UK, “bank holiday” is the commonly used term for both bank and public holidays; The days on which most businesses and non-essential services close. Most companies when measuring and reporting on activity, want to know how weekdays, weekends and bank holidays affect their performance. Depending on where in the UK you are and what period you are reporting for this can be tricky with the bank holidays changing several times over the last hundred years.

Bank holidays are holidays when banks and many other businesses are closed for the day. Public holidays are holidays which have been observed through custom and practice. From the direct.gov.uk website

These can be divided into two groups, re-occurring bank holidays and special royal proclamations.


Reoccuring Bank Holidays

Holiday Name From Til Condition England & Wales Northern Ireland Scotland Notes
New Year’s Day 1871 1973 The 1st of January  
New Year’s Day 1974 Onwards The 1st of January  
New Year Holiday 1973 Onwards The 2nd of January  
St. Patrick’s Day 1903 Onwards The 17th of March  
Good Friday T.I. 1870 The Friday before Easter Sunday  
Good Friday 1871 Onwards The Friday before Easter Sunday  
Easter Monday 1871 Onwards The Monday after Easter Sunday  
Whit Monday 1871 1970 The Monday 7 weeks after Easter Sunday Replaced by the Spring Bank Holiday. Between 1965 to 1970 this may have been moved to the Last Monday of May.
May Day Bank Holiday 1871 1977 First Monday of May  
May Day Bank Holiday 1978 Onwards First Monday of May Except: 1995, where it is moved to , for the 50th Anniversary of VE Day.
Spring Bank Holiday 1971 1977 Last Monday of May  
Spring Bank Holiday 1978 Onwards Last Monday of May Except: 2002, where it is moved to , due to the Golden Jubilee of Queen Elizabeth II.
Battle of the Boyne 1926 Onwards The 12th of July  
August Bank Holiday 1871 1964 First Monday of August  
August Bank Holiday 1965 Onwards First Monday of August Continues unchanged for Scotland.
August Bank Holiday 1965 1970 First Monday after the Last Saturday of August Replaced by the Late Summer Bank Holiday in England, Wales & Northern Ireland.
Late Summer Bank Holiday 1971 Onwards Last Monday of August  
St. Andrew’s Day 2007 Onwards The 30th of November  
Christmas Day T.I. 1870 The 25th of December  
Christmas Day 1871 Onwards The 25th of December  
Boxing Day 1871 1973 The 26th of December  
Boxing Day 1974 Onwards The 26th of December  


Royal Proclamations

Date Reason
Emergency Bank Holiday to close the London Gold Market during the Sterling Crisis of 1968
The Wedding of Princess Anne and Captain Mark Phillips at Westminster Abbey
The Silver Jubilee of Queen Elizabeth II
The Wedding of Prince Charles and Lady Diana Spencer at St. Paul’s Cathedral
May Day Bank Holiday (Moved to mark the 50th Anniversary of VE Day)
Preparation for the festivities to mark the arrival of the new millennium
The Golden Jubilee of Queen Elizabeth II
Spring Bank Holiday (Moved due to the Golden Jubilee of Queen Elizabeth II)
The Wedding of Prince William and Kate Middleton
The Diamond Jubilee of Queen Elizabeth II
May Day Bank Holiday (Moved to mark the 75th Anniversary of VE Day)
Spring bank holiday (Moved due to the Platinum Jubilee of Queen Elizabeth II)
The Platinum Jubilee of Queen Elizabeth II
The State Funeral of Queen Elizabeth II


SQL Implementation


Calculating Easter Sunday

CREATE FUNCTION [dbo].[CalculateEasterDay] ( @Year int )
RETURNS date AS
BEGIN
    /*
    A modified version of the MS-SQL algorithm posted on https://en.wikipedia.org/wiki/Computus#Software.
    Which itself is Based on the Anonymous Gregorian Algorithm, also known as the Meeus/Jones/Butcher algorithm.
    */
    DECLARE @a int, @b int, @d int
        ,@MC int = @Year %  19 -- 19 Year Metonic Cycle
        ,@SR int = @Year % 100 -- Secular Remainder
        ,@SN int = @Year / 100 -- Secular Number
    ;
    SELECT
        @a = ((19 * @MC + @SN - (@SN / 4) - ((@SN - ((@SN + 8) / 25) + 1) / 3) + 15) % 30),
        @b = ((32 + 2 * (@SN % 4) + 2 * (@SR / 4) - @a - (@SR % 4)) % 7),
        @d = @a + @b - 7 * ((@MC + 11 * @a + 22 * @b) / 451) + 114
    ;
    RETURN DATEFROMPARTS(@Year, @d / 31, (@d % 31) + 1);
END;
GO

So after all that, can we just be thankful, that so far, Cornwall’s attempts to make St. Piran’s Day a bank holiday in Cornwall, have been unsuccessful. Otherwise, we would need to calculate per region.