﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>SQLServerCentral / Discuss Content Posted by Peter Larsson / Article Discussions / Article Discussions by Author  / How many more Mondays until I retire? / Latest Posts</title><generator>InstantForum.NET v2.9.0</generator><description>SQLServerCentral</description><link>http://www.sqlservercentral.com/Forums/</link><webMaster>notifications@sqlservercentral.com</webMaster><lastBuildDate>Sat, 25 May 2013 05:09:55 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>I have posted a new function on my blog.The function can compute the Nth weekday in a month, either from the beginning or from the end of month.[url=http://weblogs.sqlteam.com/peterl/archive/2009/06/17/How-to-get-the-Nth-weekday-of-a-month.aspx]http://weblogs.sqlteam.com/peterl/archive/2009/06/17/How-to-get-the-Nth-weekday-of-a-month.aspx[/url]You can try it out and comment it.</description><pubDate>Wed, 17 Jun 2009 15:48:14 GMT</pubDate><dc:creator>SwePeso</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>Thank you for your kind response.</description><pubDate>Tue, 11 Dec 2007 03:03:39 GMT</pubDate><dc:creator>SwePeso</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>Great code!I am fan of yours!I will try to use the code without creating a function. I guess, I am very much comfortable with long queries :hehe:.Thanks.</description><pubDate>Mon, 10 Dec 2007 23:19:53 GMT</pubDate><dc:creator>Jwalant Natvarlal Soneji</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;The topic is very similar to a recent 'Users that need help' query in SQLServerCentral.com. He asked how many workdays (mon-fri) are there between two given dates. And what's interesting is that I too recently was hit with this problem only to find the same weird stuff on the Internet that Peter Larson mentioned. And I too decided to hack this problem on my own.&lt;/P&gt;&lt;P&gt;Whereas Peter Larson decided to take a general approach, I decided to take an approach that answers just that question. Thus my function looks as follows (it may need to take advantage of the code he uses that takes strips the time portion of a date):&lt;/P&gt;&lt;P&gt;create function trx_workdays(@p_startdate datetime, @p_enddate datetime) returns integer asbegin&lt;/P&gt;&lt;P&gt;declare @dwdest intdeclare @padded_enddate datetimedeclare @padded_workdays intdeclare @dw intdeclare @diff int&lt;/P&gt;&lt;P&gt;if @p_startdate is null or @p_enddate is null  return 0&lt;/P&gt;&lt;P&gt;set @padded_enddate=@p_enddateset @padded_workdays=0&lt;/P&gt;&lt;P&gt;-- pad end date so that difference becomes a multiple of 7 days;-- we also need to count the number of weekdays in the days we added for the padding;set @dwdest=datepart(dw,@p_startdate)-1if @dwdest=0 set @dwdest=7while datepart(dw,@padded_enddate)&amp;lt;&amp;gt;@dwdest -- loops no more than 6 times  begin    set @padded_enddate=dateadd(d,1,@padded_enddate)    set @dw=datepart(dw,@padded_enddate)    -- 1=saturday 7=sunday    if @dw&amp;lt;&amp;gt;1 and @dw&amp;lt;&amp;gt;7 set @padded_workdays=@padded_workdays+1      end&lt;/P&gt;&lt;P&gt;set @diff=datediff(d,@p_startdate,@padded_enddate)+1-- subtract number of intervening saturdays/sundays and subtract number of workdays we added for the paddingreturn @diff-@diff/7*2-@padded_workdays&lt;/P&gt;&lt;P&gt;endgo&lt;/P&gt;&lt;P&gt;When I have some time I will benchmark this against Peter Larson's and other solutions.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;B&gt;&lt;FONT face=Helv size=1&gt; &lt;/P&gt;&lt;/B&gt;&lt;/FONT&gt;</description><pubDate>Fri, 21 Jul 2006 10:56:00 GMT</pubDate><dc:creator>Michael Meierruth</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;Yes, they are equally safe.&lt;/P&gt;&lt;P&gt;The DATEDIFF(day, 0, GETDATE()) calculates the number of days passed since day Zero, which is January 1, 1900. This is what clips the time information.&lt;/P&gt;&lt;P&gt;These number of days I then add to the day Zero with DATEADD&lt;/P&gt;&lt;P&gt;&lt;FONT color=#115511&gt;DATEADD(day, &lt;/FONT&gt;&lt;FONT color=#ff1111&gt;DATEDIFF(day, 0, GETDATE())&lt;/FONT&gt;&lt;FONT color=#115511&gt;, 0)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;The red part calculates the number of days passed since day Zero and the green part then adds this number of days to day Zero, which gives us the day we started with, and the time information clipped.&lt;/P&gt;&lt;P&gt;This is convenient since I don't convert datetime into any other data type.&lt;/P&gt;</description><pubDate>Fri, 21 Jul 2006 02:41:00 GMT</pubDate><dc:creator>SwePeso</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;I use float as this is the same underlying data structure used to store datetime datatypes (something I picked up from SQLServerCentral but I have no supporting documentation so that's my caveat.)  By using the same data structure I try to avoid datatype conversion processing overheads, such as with the extremely common 'varchar' method, ie: convert(datetime, convert(varchar(8), getdate(), 112)), or errors as with 'int' where it rounds up.&lt;/P&gt;&lt;P&gt;I put the datediff, float and varchar methods through the wrangler twice, and got:&lt;/P&gt;&lt;P&gt;&lt;TABLE style="WIDTH: 395pt; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width=527 border=0 x:str&gt;&lt;COLGROUP&gt;&lt;COL style="WIDTH: 48pt" span=4 width=64&gt;&lt;COL style="WIDTH: 11pt; mso-width-source: userset; mso-width-alt: 548" width=15&gt;&lt;COL style="WIDTH: 48pt" span=4 width=64&gt;&lt;TBODY&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" width=64 height=17&gt;&lt;FONT face=Arial size=2&gt;iteration&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64&gt;&lt;FONT face=Arial size=2&gt;datediff&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64&gt;&lt;FONT face=Arial size=2&gt;float&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl23 style="BORDER-RIGHT: #ece9d8; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64&gt;&lt;FONT face=Arial size=2&gt;varchar&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl25 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 11pt; BORDER-BOTTOM: #ece9d8; BACKGROUND-COLOR: transparent" width=15&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl24 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: #ece9d8; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64&gt;&lt;FONT face=Arial size=2&gt;iteration&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64&gt;&lt;FONT face=Arial size=2&gt;datediff&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64&gt;&lt;FONT face=Arial size=2&gt;float&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64&gt;&lt;FONT face=Arial size=2&gt;varchar&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl23 style="BORDER-RIGHT: #ece9d8; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: #ece9d8; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: #ece9d8; BACKGROUND-COLOR: transparent"&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl24 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: #ece9d8; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;10&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl23 style="BORDER-RIGHT: #ece9d8; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: #ece9d8; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: #ece9d8; BACKGROUND-COLOR: transparent"&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl24 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: #ece9d8; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;10&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;100&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl23 style="BORDER-RIGHT: #ece9d8; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: #ece9d8; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: #ece9d8; BACKGROUND-COLOR: transparent"&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl24 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: #ece9d8; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;100&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;2&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;1000&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;6&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;7&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl23 style="BORDER-RIGHT: #ece9d8; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;12&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: #ece9d8; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: #ece9d8; BACKGROUND-COLOR: transparent"&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl24 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: #ece9d8; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;1000&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;4&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;7&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;13&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;10000&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;57&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;70&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl23 style="BORDER-RIGHT: #ece9d8; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;133&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl26 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: #ece9d8; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: #ece9d8; BACKGROUND-COLOR: transparent"&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl24 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: #ece9d8; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;10000&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;71&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;75&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;137&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;100000&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;684&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;772&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl23 style="BORDER-RIGHT: #ece9d8; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;1376&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl27 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: #ece9d8; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent"&gt;&lt;FONT face=Arial size=2&gt; &lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl24 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: #ece9d8; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;100000&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;649&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;700&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;1355&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;&lt;P&gt;'Varchar' is an appalling choice for speed, though 'datediff' does hold a slight advantage over 'float'.&lt;/P&gt;&lt;P&gt;However, my main reason for raising this was (subjective&lt;img src='images/emotions/wink.gif' height='20' width='20' border='0' title='Wink' align='absmiddle'&gt;) readability: it was not initially clear to me what DATEDIFF(day, 0, getdate()) was trying to accomplish by passing "0" as a date.  I'm also a bit wary of implicit conversions, so how "safe" is 0 as a default date?  Can the default be changed from 1-1-1900, and what effects would this have?&lt;/P&gt;&lt;P&gt;So, with a whole 51 millisecond difference for 100,000 "time strips" (or about 274 years for a date range function), which is the *safest* method?  Or are they equally safe and we should all use 'datediff' for the slight efficiency gained?&lt;/P&gt;&lt;P&gt;S.&lt;/P&gt;</description><pubDate>Thu, 20 Jul 2006 18:53:00 GMT</pubDate><dc:creator>Fal</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;Yes, R2ro's solution is fast. And if I change&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New"&gt;SET @daysDiff = DATEDIFF(day, @prmLoDate, @prmHiDate)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;to&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New"&gt;SET @daysDiff = 1 + DATEDIFF(day, @prmLoDate, @prmHiDate)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;it calculates the right days too.&lt;/P&gt;&lt;P&gt;I tried with the daterange 20060101 to 20060102 (Jan 1 to Jan 2, 2006) and it only gave me the first date.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;I think it is good that we have these after discussions. My idea with the article was to give an idea of how to implement a function that gives a daterange on the fly. Of course having a permanent tally table is faster. And it would be better if the counter arguments given are fully tested.&lt;/P&gt;</description><pubDate>Thu, 20 Jul 2006 03:50:00 GMT</pubDate><dc:creator>SwePeso</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>Good! Here is a guy who actually read the first part of the article where I wrote that a CROSS JOIN solution is the fastest solution &lt;img src='images/emotions/biggrin.gif' height='20' width='20' border='0' title='Big Grin' align='absmiddle'&gt;</description><pubDate>Thu, 20 Jul 2006 03:33:00 GMT</pubDate><dc:creator>SwePeso</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;I believe the following function is faster than all the above suggested:&lt;/P&gt;&lt;P&gt;CREATE FUNCTION dbo.fnSeqDates(    @LowDate DATETIME,    @HighDate DATETIME)RETURNS @Dates TABLE        (            SeqDate DATETIME        )ASBEGIN&lt;/P&gt;&lt;P&gt; DECLARE @Temp DATETIME  DECLARE @NumberOfDays int&lt;/P&gt;&lt;P&gt; IF @LowDate &amp;gt; @HighDate  SELECT @Temp = @LowDate,   @LowDate = DATEADD(day, DATEDIFF(day, 0, @HighDate) - 1, 0),   @HighDate = DATEADD(day, DATEDIFF(day, 0, @Temp), 0) ELSE         SELECT @LowDate = DATEADD(day, DATEDIFF(day, 0, @LowDate) - 1, 0),   @HighDate = DATEADD(day, DATEDIFF(day, 0, @HighDate), 0)&lt;/P&gt;&lt;P&gt; SELECT @NumberOfDays = DATEDIFF(d, @LowDate, @HighDate)&lt;/P&gt;&lt;P&gt; INSERT @Dates  SELECT DATEADD(d, Number, @LowDate) AS Date FROM Numbers WHERE Number &amp;lt;= @NumberOfDays&lt;/P&gt;&lt;P&gt; RETURNENDGO&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;It uses a Numbers table, containing all Numbers less than, say 1000000. This can be created once and for all as follows:&lt;/P&gt;&lt;P&gt;SELECT TOP 1000000 Number = IDENTITY(INT, 1, 1) INTO NumbersFROM    sysobjects a1  CROSS JOIN    sysobjects a2  CROSS JOIN    sysobjects a3  CROSS JOIN    sysobjects a4  CROSS JOIN    sysobjects a5&lt;/P&gt;&lt;P&gt;ALTER TABLE Numbers        ADD CONSTRAINT Index_Numbers PRIMARY KEY CLUSTERED(Number)GO&lt;/P&gt;</description><pubDate>Thu, 20 Jul 2006 02:35:00 GMT</pubDate><dc:creator>Jesper-244176</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;Peter, the following code:&lt;FONT face="Courier New" color=#3333bb&gt;select cast(cast(getdate() as int) as datetime)&lt;/FONT&gt;will give incorrect results if the time is in the afternoon. &lt;/P&gt;&lt;P&gt;However, the code that Simon wrote:&lt;FONT face="Courier New" color=#3333bb&gt;select cast(floor(cast(getdate() as float)) as datetime)&lt;/FONT&gt;gives the correct result.&lt;/P&gt;&lt;P&gt;Razvan&lt;/P&gt;</description><pubDate>Thu, 20 Jul 2006 02:05:00 GMT</pubDate><dc:creator>Razvan Socol</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;This is an interesting approach!&lt;/P&gt;&lt;P&gt;However, since float is not exact value there might be a difference in result. But since we only want to keep day information that might not be a problem.&lt;/P&gt;&lt;P&gt;If you have the time, run your test-code again with this code&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New"&gt;select cast(cast(getdate() as int) as datetime)&lt;/FONT&gt;&lt;/P&gt;</description><pubDate>Thu, 20 Jul 2006 00:47:00 GMT</pubDate><dc:creator>SwePeso</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;Nice work, R2ro! It seems that your function is the best, so far. Here are some timings (in ms) for the three versions (counting the rows in the result, for the dates between Jan 1, 2006 and Jan 31, 2307):&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Peter&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Razvan&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;R2ro&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size=2&gt;1906&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size=2&gt;1670&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;FONT size=2&gt;766&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size=2&gt;2076&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size=2&gt;2846&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size=2&gt;796&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size=2&gt;830&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size=2&gt;1653&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size=2&gt;876&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size=2&gt;906&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size=2&gt;610&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size=2&gt;766&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size=2&gt;860&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size=2&gt;1703&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size=2&gt;873&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size=2&gt;3170&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size=2&gt;2846&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size=2&gt;703&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;FONT color=#111111&gt;As you can see, on my system, the timings are varying strangely, but on &lt;/FONT&gt;&lt;FONT color=#111111&gt;average, your method seems to be the best.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#ff0000&gt;&lt;FONT color=#111111&gt;Razvan&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;</description><pubDate>Thu, 20 Jul 2006 00:28:00 GMT</pubDate><dc:creator>Razvan Socol</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;DIV&gt;&lt;SPAN style="WIDTH: 496px; HEIGHT: 105px" onclick=this.focus();&gt;&lt;P&gt;Why am I using the DATEADD and DATEDIFF functions here?They are used to remove time information! I want to be sure that only date information is used. So I set the time to &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 8pt; COLOR: #2f3699; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;00:00:00.000&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=EN-US&gt; the fastest way I know.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang=EN-US&gt;[ie: DATEADD(day, DATEDIFF(day, 0, getdate()), 0)        ]&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;I've not seen this method used before.  Although it pops up from time-to-time on this site, the "best" method I knew for stripping the time was:&lt;/DIV&gt;&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;DIV&gt;cast(floor(cast(getdate() as float)) as datetime)&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV dir=ltr&gt;After some testing (with a rather clunky while loop) I got the following table:&lt;/DIV&gt;&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;DIV dir=ltr&gt;&lt;TABLE style="WIDTH: 144pt; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 width=192 border=0 x:str&gt;&lt;COLGROUP&gt;&lt;COL style="WIDTH: 48pt" span=3 width=64&gt;&lt;TBODY&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" width=64 height=17&gt;&lt;FONT face=Arial size=2&gt;iterations&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64&gt;&lt;FONT face=Arial size=2&gt;datediff&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext 0.5pt solid; BORDER-LEFT: windowtext; WIDTH: 48pt; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=64&gt;&lt;FONT face=Arial size=2&gt;floor&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;10&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;100&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;0&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;1000&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;7&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;6&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;10000&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;68&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;75&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="HEIGHT: 12.75pt" height=17&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext 0.5pt solid; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 12.75pt; BACKGROUND-COLOR: transparent" align=right height=17 x:num&gt;&lt;FONT face=Arial size=2&gt;100000&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;712&lt;/FONT&gt;&lt;/TD&gt;&lt;TD class=xl22 style="BORDER-RIGHT: windowtext 0.5pt solid; BORDER-TOP: windowtext; BORDER-LEFT: windowtext; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" align=right x:num&gt;&lt;FONT face=Arial size=2&gt;810&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV dir=ltr&gt;Iterations is the number of times the method was used, run 100 times each, and then an average taken.  Seems to be that if you're performing a low number of "time strips" there is negligible difference.  Indeed, for 100,000 iterations there is only a 98 millisecond gain.  Less than 1 second.&lt;/DIV&gt;&lt;DIV dir=ltr&gt; &lt;/DIV&gt;&lt;DIV dir=ltr&gt;So, *is* there a real difference of one method over the other?  &lt;/DIV&gt;&lt;DIV dir=ltr&gt; &lt;/DIV&gt;&lt;DIV dir=ltr&gt;S.&lt;/DIV&gt;&lt;DIV dir=ltr&gt; &lt;/DIV&gt;</description><pubDate>Wed, 19 Jul 2006 18:54:00 GMT</pubDate><dc:creator>Fal</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;I too wrote a slightly different version...  Same binary concept, implemented slightly differently with a twist!  It allows the specification of an increment or step value.&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#0000ff size=1&gt;&lt;P&gt;CREATE FUNCTION dbo.udf_genDateSequence   (      @prmLoDate datetime, -- lower date boundary (starting value)      @prmHiDate datetime, -- upper date boundary (maximum value)      @prmIncDays int      -- increment value   )RETURNS @Dates TABLE (DateVal datetime NOT NULL PRIMARY KEY)AS/*&lt;/P&gt;&lt;P&gt;Function:   Generate a table of dates.&lt;/P&gt;&lt;P&gt;Strategy:   Set-based scalar value generation.&lt;/P&gt;&lt;P&gt;Usage:      dbo.udf_genDateSequence(fromValue, toValue, stepValue)&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;BEGIN   DECLARE      @daysDiff int,      @swapVar datetime &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;   IF @prmLoDate &amp;gt; @prmHiDate         BEGIN            SET @swapVar = @prmLoDate            SET @prmLoDate = DATEADD(day, DATEDIFF(day, 0, @prmHiDate), 0)            SET @prmHiDate = DATEADD(day, DATEDIFF(day, 0, @swapVar), 0)         END      ELSE         BEGIN            SET @prmLoDate = DATEADD(day, DATEDIFF(day, 0, @prmLoDate), 0)            SET @prmHiDate = DATEADD(day, DATEDIFF(day, 0, @prmHiDate), 0)         END&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;   SET @daysDiff = DATEDIFF(day, @prmLoDate, @prmHiDate)&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;   INSERT INTO @Dates VALUES(@prmLoDate)&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;   WHILE @prmIncDays &amp;lt;= @daysDiff      BEGIN         INSERT INTO @Dates            SELECT DATEADD(day, @prmIncDays, DateVal)               FROM @Dates               WHERE DateVal &amp;lt;= DATEADD(day, -@prmIncDays, @prmHiDate)&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;         SET @prmIncDays = @prmIncDays * 2      END&lt;/P&gt;&lt;P&gt;   RETURNENDgo&lt;/FONT&gt;&lt;/P&gt;&lt;/PRE&gt;</description><pubDate>Wed, 19 Jul 2006 12:51:00 GMT</pubDate><dc:creator>R2ro</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;I had the idea of populating the Holiday table myself this morning. I found a function to calculate the date for Easter on this page:&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.databasejournal.com/scripts/article.php/3469911"&gt;http://www.databasejournal.com/scripts/article.php/3469911&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Then I used that along with Peter's seqDates function to create the following SP. Covers all UK Holidays, and if New Year, Christmas or Boxing Day occur at the weekend it inserts the appropriate Monday/Tuesday into the table.&lt;/P&gt;&lt;P&gt;CREATE PROCEDURE GenerateHolidays (@yr SMALLINT)&lt;/P&gt;&lt;P&gt;AS&lt;/P&gt;&lt;P&gt;DECLARE @tmpdatec VARCHAR(10)DECLARE @tmpdate SMALLDATETIMEDECLARE @tmpdesc VARCHAR(50)DECLARE @sdate   VARCHAR(10)DECLARE @edate   VARCHAR(10)&lt;/P&gt;&lt;P&gt;SET @tmpdatec = '01/01/' + CAST(@yr AS VARCHAR)SET @tmpdate = CAST(@tmpdatec AS SMALLDATETIME)IF DATEPART(dw, @tmpdate) = 7 SELECT @tmpdate = DATEADD(DAY, 1, @tmpdate) IF DATEPART(dw, @tmpdate) = 1 SELECT @tmpdate = DATEADD(DAY, 1, @tmpdate) SET @tmpdesc = 'New Year''s Day'INSERT INTO Holidays VALUES (@tmpdate, @tmpdesc)&lt;/P&gt;&lt;P&gt;SELECT @tmpdate = dbo.fnYear2Easter(@yr)SELECT @tmpdate = DATEADD(DAY, -2, @tmpdate)SELECT @tmpdesc = 'Good Friday'INSERT INTO Holidays VALUES (@tmpdate, @tmpdesc)&lt;/P&gt;&lt;P&gt;SELECT @tmpdate = DATEADD(DAY, 3, @tmpdate)SELECT @tmpdesc = 'Easter Monday'INSERT INTO Holidays VALUES (@tmpdate, @tmpdesc)&lt;/P&gt;&lt;P&gt;SET @sdate = '05/01/' + CAST(@yr AS VARCHAR)SET @edate = '05/31/' + CAST(@yr AS VARCHAR)&lt;/P&gt;&lt;P&gt;SELECT @tmpdate = MIN(dt.SeqDate) FROM dbo.fnSeqDates(@sdate, @edate) dt WHERE DATEPART(dw, dt.SeqDate) = 2SET @tmpdesc = 'May Day Bank Holiday'INSERT INTO Holidays VALUES (@tmpdate, @tmpdesc)&lt;/P&gt;&lt;P&gt;SELECT @tmpdate = MAX(dt.SeqDate) FROM dbo.fnSeqDates(@sdate, @edate) dt WHERE DATEPART(dw, dt.SeqDate) = 2SET @tmpdesc = 'Spring Bank Holiday'INSERT INTO Holidays VALUES (@tmpdate, @tmpdesc)&lt;/P&gt;&lt;P&gt;SET @sdate = '08/01/' + CAST(@yr AS VARCHAR)SET @edate = '08/31/' + CAST(@yr AS VARCHAR)&lt;/P&gt;&lt;P&gt;SELECT @tmpdate = MAX(dt.SeqDate) FROM dbo.fnSeqDates(@sdate, @edate) dt WHERE DATEPART(dw, dt.SeqDate) = 2SET @tmpdesc = 'August Bank Holiday'INSERT INTO Holidays VALUES (@tmpdate, @tmpdesc)&lt;/P&gt;&lt;P&gt;SET @tmpdatec = '12/25/' + CAST(@yr AS VARCHAR)SET @tmpdate = CAST(@tmpdatec AS SMALLDATETIME)IF DATEPART(dw, @tmpdate) = 7 SELECT @tmpdate = DATEADD(DAY, 1, @tmpdate) IF DATEPART(dw, @tmpdate) = 1 SELECT @tmpdate = DATEADD(DAY, 1, @tmpdate) SET @tmpdesc = 'Christmas Day'INSERT INTO Holidays VALUES (@tmpdate, @tmpdesc)&lt;/P&gt;&lt;P&gt;SET @tmpdatec = '12/26/' + CAST(@yr AS VARCHAR)SET @tmpdate = CAST(@tmpdatec AS SMALLDATETIME)IF DATEPART(dw, @tmpdate) = 7 SELECT @tmpdate = DATEADD(DAY, 2, @tmpdate) IF DATEPART(dw, @tmpdate) = 1 SELECT @tmpdate = DATEADD(DAY, 2, @tmpdate) SET @tmpdesc = 'Boxing Day'INSERT INTO Holidays VALUES (@tmpdate, @tmpdesc)&lt;/P&gt;&lt;P&gt; &lt;/P&gt;</description><pubDate>Wed, 19 Jul 2006 09:26:00 GMT</pubDate><dc:creator>Richard Thomas-189729</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;Yes, I did benchmark your code Razvan. Did you try your test-code yourself?Running your test-code above gives 763 milliseconds for my function and 1,563 milliseconds for your function.&lt;/P&gt;&lt;P&gt;Mine is faster and I think that is because SQL is not very fast handling two variables as in your function.&lt;/P&gt;</description><pubDate>Wed, 19 Jul 2006 09:13:00 GMT</pubDate><dc:creator>SwePeso</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;The best way would be to use this function&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New"&gt;CREATE FUNCTION dbo.GetEasterSunday (     @Y INT ) RETURNS SMALLDATETIME AS BEGIN     DECLARE     @EpactCalc INT,                  @PaschalDaysCalc INT,                 @NumOfDaysToSunday INT,                 @EasterMonth INT,                 @EasterDay INT      SET @EpactCalc = (24 + 19 * (@Y % 19)) % 30     SET @PaschalDaysCalc = @EpactCalc - (@EpactCalc / 28)     SET @NumOfDaysToSunday = @PaschalDaysCalc - ((@Y + @Y / 4 + @PaschalDaysCalc - 13) % 7)    SET @EasterMonth = 3 + (@NumOfDaysToSunday + 40) / 44    SET @EasterDay = @NumOfDaysToSunday + 28 - (31 * (@EasterMonth / 4))      RETURN     (         SELECT CONVERT         (             SMALLDATETIME,              RTRIM(@Y)              + RIGHT('0'+RTRIM(@EasterMonth), 2)              + RIGHT('0'+RTRIM(@EasterDay), 2)         )     ) END &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;Taken from &lt;A href="http://www.aspfaq.com/show.asp?id=2519"&gt;http://www.aspfaq.com/show.asp?id=2519&lt;/A&gt;&lt;/P&gt;</description><pubDate>Wed, 19 Jul 2006 09:04:00 GMT</pubDate><dc:creator>SwePeso</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>Well done Peter.  I like the versatility.  Great examples.You could even populate the holiday table this way, at least when they are defined like the Civic Holiday or Labour Day (in Canada) as the first Monday in August and September, respectively.  For holidays dependant on the lunar cycle, like Easter...  whatcha gonna do?</description><pubDate>Wed, 19 Jul 2006 08:49:00 GMT</pubDate><dc:creator>John Rempel</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;I modified your function as follows:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;&lt;FONT color=#3333bb&gt;CREATE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;FUNCTION&lt;/FONT&gt;&lt;FONT size=2&gt; dbo&lt;/FONT&gt;&lt;FONT size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;MySeqDates (&lt;/FONT&gt;&lt;FONT size=2&gt;@LowDate &lt;/FONT&gt;&lt;FONT size=2&gt;DATETIME&lt;/FONT&gt;&lt;FONT size=2&gt;, &lt;/FONT&gt;&lt;FONT size=2&gt;@HighDate &lt;/FONT&gt;&lt;FONT size=2&gt;DATETIME&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt;RETURNS @Dates &lt;/FONT&gt;&lt;FONT size=2&gt;TABLE &lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;SeqDate &lt;/FONT&gt;&lt;FONT size=2&gt;DATETIME&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb size=2&gt;)&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;ASBEGIN&lt;/FONT&gt;&lt;FONT size=2&gt;DECLARE&lt;/FONT&gt;&lt;FONT size=2&gt; @Temp &lt;/FONT&gt;&lt;FONT size=2&gt;DATETIME&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#3333bb&gt;IF&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt; @LowDate &lt;/FONT&gt;&lt;FONT size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt; @HighDate &lt;/FONT&gt;&lt;FONT size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; @Temp &lt;/FONT&gt;&lt;FONT size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; @LowDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;,  &lt;/FONT&gt;&lt;FONT size=2&gt;@LowDate &lt;/FONT&gt;&lt;FONT size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;DATEADD&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;day&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;DATEDIFF&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;day&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; @HighDate&lt;/FONT&gt;&lt;FONT size=2&gt;),&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;),  &lt;/FONT&gt;&lt;FONT size=2&gt;@HighDate &lt;/FONT&gt;&lt;FONT size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;DATEADD&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;day&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;DATEDIFF&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;day&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; @Temp&lt;/FONT&gt;&lt;FONT size=2&gt;),&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb size=2&gt;) &lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;ELSE &lt;/FONT&gt;&lt;FONT size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; @LowDate &lt;/FONT&gt;&lt;FONT size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;DATEADD&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;day&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;DATEDIFF&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;day&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; @LowDate&lt;/FONT&gt;&lt;FONT size=2&gt;),&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;),  &lt;/FONT&gt;&lt;FONT size=2&gt;@HighDate &lt;/FONT&gt;&lt;FONT size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;DATEADD&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;day&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;DATEDIFF&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;day&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; @HighDate&lt;/FONT&gt;&lt;FONT size=2&gt;),&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#3333bb&gt;INSERT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt; @Dates &lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;SeqDate&lt;/FONT&gt;&lt;FONT size=2&gt;) &lt;/FONT&gt;&lt;FONT size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;@LowDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt;DECLARE&lt;/FONT&gt;&lt;FONT size=2&gt; @TotalRows &lt;/FONT&gt;&lt;FONT size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; @RowCnt &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @TotalRows&lt;/FONT&gt;&lt;FONT size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;1&lt;/FONT&gt;&lt;FONT size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @RowCnt&lt;/FONT&gt;&lt;FONT size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;1&lt;/FONT&gt;&lt;FONT size=2&gt;WHILE&lt;/FONT&gt;&lt;FONT size=2&gt; @RowCnt &lt;/FONT&gt;&lt;FONT size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 0 &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;BEGIN &lt;/FONT&gt;&lt;FONT size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; @Dates &lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;SeqDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;) &lt;/FONT&gt;&lt;FONT size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;DATEADD&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;dd&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; @TotalRows&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; d&lt;/FONT&gt;&lt;FONT size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;SeqDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;) &lt;/FONT&gt;&lt;FONT size=2&gt;FROM&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt; @Dates d &lt;/FONT&gt;&lt;FONT size=2&gt;WHERE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;DATEADD&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;dd&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; @TotalRows&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; d&lt;/FONT&gt;&lt;FONT size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;SeqDate&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;&amp;lt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt; @HighDate &lt;/FONT&gt;&lt;FONT size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @RowCnt&lt;/FONT&gt;&lt;FONT size=2&gt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;@@ROWCOUNT &lt;/FONT&gt;&lt;FONT size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @TotalRows&lt;/FONT&gt;&lt;FONT size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;@TotalRows&lt;/FONT&gt;&lt;FONT size=2&gt;+&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb size=2&gt;@RowCnt&lt;/FONT&gt;&lt;FONT color=#3333bb size=2&gt;END&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#3333bb&gt;RETURNEND&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#111111&gt;The difference is that I use a variable to count the number of rows (instead of using COUNT() in a derived table) which should be faster if the number of rows is really big. To benchmark, try running something like this:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;&lt;FONT color=#3333bb&gt;DECLARE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb size=2&gt; @t &lt;/FONT&gt;&lt;FONT color=#3333bb size=2&gt;datetime&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#3333bb&gt;SET&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt; @t&lt;/FONT&gt;&lt;FONT size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;GETDATE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;()&lt;/FONT&gt;&lt;FONT size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;COUNT&lt;/FONT&gt;&lt;FONT size=2&gt;(*)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; dbo&lt;/FONT&gt;&lt;FONT size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;fnSeqDates&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;'20060101'&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;'23070131'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt;PRINT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;CONVERT&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;varchar&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;10&lt;/FONT&gt;&lt;FONT size=2&gt;),&lt;/FONT&gt;&lt;FONT size=2&gt;DATEDIFF&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;ms&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;@t&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;GETDATE&lt;/FONT&gt;&lt;FONT size=2&gt;()))+&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;' ms'&lt;/FONT&gt;&lt;FONT size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @t&lt;/FONT&gt;&lt;FONT size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;GETDATE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;()&lt;/FONT&gt;&lt;FONT size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;COUNT&lt;/FONT&gt;&lt;FONT size=2&gt;(*)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; dbo&lt;/FONT&gt;&lt;FONT size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;MySeqDates&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;'20060101'&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;'23070131'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#3333bb&gt;&lt;FONT size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt;PRINT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;CONVERT&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;varchar&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;10&lt;/FONT&gt;&lt;FONT size=2&gt;),&lt;/FONT&gt;&lt;FONT size=2&gt;DATEDIFF&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;ms&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;@t&lt;/FONT&gt;&lt;FONT size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;GETDATE&lt;/FONT&gt;&lt;FONT size=2&gt;()))+&lt;/FONT&gt;&lt;FONT size=2&gt;' ms'&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#111111&gt;Of course, it's very unlikely that anyone would need such a long period (and for shorter periods the difference in performance is very small).&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#111111&gt;Razvan&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;</description><pubDate>Wed, 19 Jul 2006 08:43:00 GMT</pubDate><dc:creator>Razvan Socol</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;In the first code sample, I suppose that this portion should return each number between 0 and 32, right ?&lt;/P&gt;&lt;FONT color=#808080 size=2&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; a&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;i &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;+&lt;/FONT&gt;&lt;FONT size=2&gt; b&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;j &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;+&lt;/FONT&gt;&lt;FONT size=2&gt; c&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;k &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 0 i &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 1 &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 2&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; a&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 0 j &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 3 &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 6&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; b&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 0 k &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 12 &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 24&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; c&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ORDER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;BY&lt;/FONT&gt;&lt;FONT size=2&gt; 1&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT color=#111111&gt;Well... it doesn't. It generate some numbers between 0 and 32, but not all of them. The above query only generates 27 values. If you want to generate each number between 0 and 31, you can use this query: &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; a&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;i &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;+&lt;/FONT&gt;&lt;FONT size=2&gt; b&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;j &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;+&lt;/FONT&gt;&lt;FONT size=2&gt; c&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;k &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 0 i &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 1 &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 2 &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 3&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; a&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;, &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 0 j &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 4 &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 8 &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 12&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; b&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;, &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 0 k &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;UNION&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;ALL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; 16&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; c&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ORDER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;BY&lt;/FONT&gt;&lt;FONT size=2&gt; 1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;Razvan&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;</description><pubDate>Wed, 19 Jul 2006 08:13:00 GMT</pubDate><dc:creator>Razvan Socol</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;Do you really need dates that old? &lt;img src='images/emotions/smile.gif' height='20' width='20' border='0' title='Smile' align='absmiddle'&gt;&lt;/P&gt;&lt;P&gt;You could use&lt;/P&gt;&lt;P&gt;select datediff(d, '18000106', @dateTo)/7 - datediff(d, '18000107', @dateFrom)/7&lt;/P&gt;&lt;P&gt;instead. Note that&lt;/P&gt;&lt;P&gt;select datediff(d, '18000106', '1900-01-03')/7 - datediff(d, '18000107', '1899-12-29')/7&lt;/P&gt;&lt;P&gt;gives you one Monday.&lt;/P&gt;&lt;P&gt;My formula needs two reference dates, a Monday (e.g. 1900-01-01 or 1800-01-06) and the following Tuesday (e.g. 1900-01-02 or 1800-01-07). Both @dateFrom and @dateTo must be larger than these days for the formula to work. But OK, you found the weak point &lt;img src='images/emotions/smile.gif' height='20' width='20' border='0' title='Smile' align='absmiddle'&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;</description><pubDate>Wed, 19 Jul 2006 07:08:00 GMT</pubDate><dc:creator>Jesper-244176</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;Ok, ok ok &lt;img src='images/emotions/biggrin.gif' height='20' width='20' border='0' title='Big Grin' align='absmiddle'&gt;&lt;/P&gt;&lt;P&gt;Still don't get proper result with date range 1899-12-29 and 1900-01-03.&lt;/P&gt;&lt;P&gt;Running&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" color=#ff1111&gt;select datediff(d, '19000101', '1900-01-03')/7 - datediff(d, '19000102', '1899-12-29')/7&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;gives me 0 mondays. Shouldn't it report 1 monday for &lt;FONT face="Courier New" color=#ff1111&gt;January 1, 1900&lt;/FONT&gt;?&lt;/P&gt;</description><pubDate>Wed, 19 Jul 2006 06:35:00 GMT</pubDate><dc:creator>SwePeso</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;No, no, use the formula above:&lt;/P&gt;&lt;P&gt;select datediff(d, '19000101', '20060724')/7 - datediff(d, '19000102', '20060717')/7&lt;/P&gt;&lt;P&gt;returns 2, i.e 2 Mondays between the 17th and the 24th.&lt;/P&gt;</description><pubDate>Wed, 19 Jul 2006 06:07:00 GMT</pubDate><dc:creator>Jesper-244176</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;Yes, it works well if not more than one of the two dates already is a monday. Using this code&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New"&gt;select (datediff(d, '20060213', '20060724') + 1)/7 - datediff(d, '20060213', '20060717')/7&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;reports 1 monday to me, where it should report 2 mondays.&lt;/P&gt;&lt;P&gt;But your query is very fast.&lt;/P&gt;</description><pubDate>Wed, 19 Jul 2006 06:00:00 GMT</pubDate><dc:creator>SwePeso</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;Calculating the number of Mondays between two dates was the subject of the following thread:&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sqlservercentral.com/forums/shwmessage.aspx?forumid=8&amp;amp;messageid=258968"&gt;http://www.sqlservercentral.com/forums/shwmessage.aspx?forumid=8&amp;amp;messageid=258968&lt;/A&gt;&lt;/P&gt;&lt;P&gt;My suggestion was the following:&lt;/P&gt;&lt;P&gt;select datediff(d, '19000101', @dateTo)/7 - datediff(d, '19000102', @dateFrom)/7&lt;/P&gt;&lt;P&gt;I still believe this is the fastest method to calculate the number of Mondays between two dates. On the other hand, it is not very flexible...&lt;/P&gt;&lt;P&gt; &lt;/P&gt;</description><pubDate>Wed, 19 Jul 2006 04:47:00 GMT</pubDate><dc:creator>Jesper-244176</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;True, and it works too. But maybe not that versatile?&lt;/P&gt;</description><pubDate>Wed, 19 Jul 2006 03:35:00 GMT</pubDate><dc:creator>SwePeso</dc:creator></item><item><title>RE: How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;Nice article,  alternatively...&lt;/P&gt;&lt;P&gt;SET DATEFIRST 1 -- force monday as the beginning of the week&lt;/P&gt;&lt;P&gt;DECLARE @bdy datetime, @RetiralAge smallint&lt;/P&gt;&lt;P&gt;SET @bdy='24-jul-1971'SET @RetiralAge=65&lt;/P&gt;&lt;P&gt;SELECT  datediff (dd,getdate()+(8-datepart(dw,getdate())),dateadd(year,@RetiralAge,@bdy))/7  as "Mondays till you retire"&lt;/P&gt;&lt;P&gt;-Ally&lt;/P&gt;</description><pubDate>Wed, 19 Jul 2006 02:40:00 GMT</pubDate><dc:creator>Ally MacKenzie</dc:creator></item><item><title>How many more Mondays until I retire?</title><link>http://www.sqlservercentral.com/Forums/Topic289513-305-1.aspx</link><description>&lt;P&gt;Comments posted to this topic are about the content posted at &lt;A href="http://www.sqlservercentral.com/columnists/plarsson/howmanymoremondaysuntiliretire.asp"&gt;http://www.sqlservercentral.com/columnists/plarsson/howmanymoremondaysuntiliretire.asp&lt;/A&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;</description><pubDate>Thu, 22 Jun 2006 15:00:00 GMT</pubDate><dc:creator>SwePeso</dc:creator></item></channel></rss>