Q
Problem solve Get help with specific problems with your technologies, process and projects.

SQL query for all Fridays in a year

How to get all Fridays for year 2007 in SQL?

How to get all Fridays for year 2007?

What an unusual request. Hard to imagine where a table of Friday dates might be required. Nevertheless, ask an SQL question, and you will get an SQL answer.

With SQL, we are concerned with sets. The set we need here is a set of Friday dates. We're going to generate these by adding multiples of 7 to the date of the first Friday of the year.

To do this, we'll need the numbers 0 through 51, which will be the multiples of 7 we want to add. We can get these by a familar technique involving a numbers table. For example, see The Integers table (28 January, 2004), which explains how to generate the numbers 0 through 999 using a three-way cross join of the integers from 0 through 9. We'll use a similar join here, slightly simpler because we only need 52 numbers.

The other part of the problem is to determine the first Friday of the year. Let's assign a number to the days of the week, so that Sunday=1, Monday=2, and so on, up to Saturday=7. Obtain this weekday number for January 1st of the year in question, subtract this number from 13, and take the modulus with respect to 7. This gives the number of days to add to January 1st, to get to the first Friday of the year. Finally, to this Friday date, add multiples of 7 from the numbers table.

Here's the solution, using MySQL syntax for illustrative purposes:

select date_add('2007-01-01'
               , interval
        mod(13-dayofweek('2007-01-01'),7)
             + n * 7 day ) as friday
  from (
       select 10*t.i + u.i  as n
         from integers t
       cross
         join integers u
       ) as numbers
 where n between 0 and 51
order 
    by friday

Here DAYOFWEEK is the MySQL function which yields Sunday=1, Monday=2, and so on, up to Saturday=7. The inline NUMBERS table has one column, N, and we apply the WHERE condition to get a whole year's worth of Fridays.

This was last published in July 2007

Dig Deeper on Oracle and SQL

PRO+

Content

Find more PRO+ content and other member only offers, here.

Have a question for an expert?

Please add a title for your question

Get answers from a TechTarget expert on whatever's puzzling you.

You will be able to add details on the next page.

Start the conversation

Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

-ADS BY GOOGLE

SearchDataManagement

SearchBusinessAnalytics

SearchSAP

SearchSQLServer

TheServerSide.com

SearchDataCenter

SearchContentManagement

SearchFinancialApplications

Close