[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

Last Sat of the Previous month

Posted on 2007-11-20
7
Medium Priority
?
342 Views
Last Modified: 2012-08-14
Hello,

How can I calculate the last Saturday of the previous month?


Thanks !
0
Comment
Question by:sbagireddi
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
7 Comments
 
LVL 25

Expert Comment

by:imitchie
ID: 20324734
declare @YOUR_DATE datetime
set @YOUR_DATE=CONVERT(datetime, '2003/07/01')
select DATEADD(d, (CASE WHEN DATEPART(dw, @YOUR_DATE)>=6 THEN 6-DATEPART(dw, @YOUR_DATE) ELSE -DATEPART(dw, @YOUR_DATE) END), @YOUR_DATE)
0
 
LVL 19

Expert Comment

by:frankytee
ID: 20324775
declare @dtX as smalldatetime
set @dtx = getdate() -(day(getdate()))
select case DATEPART ( dw , @dtx )
      when 6 then @dtx
      else @dtx - DATEPART( dw , @dtx )
           end as 'LastSaturday'
0
 
LVL 8

Author Comment

by:sbagireddi
ID: 20324779
Hi,

When I substitute the @YOUR_DATE with getdate( ) it gives the last Sat ie. 11/17/2007.
I would like to know the last Sat of the previous month i.e Oct, it would be 10/27/2007.
 
Let me explain the context:
I am recursing through a directory and want to know all the log backups in the directory from the last Sat of the previous month (when the last full backup completes) to the first day of the current month.

Thanks a ton!

0
Fill in the form and get your FREE NFR key NOW!

Veeam® is happy to provide a FREE NFR server license to certified engineers, trainers, and bloggers.  It allows for the non‑production use of Veeam Agent for Microsoft Windows. This license is valid for five workstations and two servers.

 
LVL 19

Accepted Solution

by:
frankytee earned 1000 total points
ID: 20324784
if you want to get remove the time component:
declare @dtX as smalldatetime
--last day of last month
set @dtx = cast(floor(cast((getdate() -(day(getdate()))) as int)) as smalldatetime)
--now last saturday
select
   case DATEPART ( dw , @dtx )
       when 6 then @dtx
        else @dtx - DATEPART( dw , @dtx )
   end as 'LastSaturdayOfPreviousMonth'
0
 
LVL 25

Assisted Solution

by:imitchie
imitchie earned 1000 total points
ID: 20324836
sorry, fixed

select dateadd(d, -
 isnull(nullif(
 datepart(dw, dateadd(m, month(@your_date)-1, dateadd(yy, year(@your_date) - 1900, 0))-1),7),0),
 dateadd(m, month(@your_date)-1, dateadd(yy, year(@your_date) - 1900, 0))-1)

Open in new window

0
 
LVL 25

Expert Comment

by:imitchie
ID: 20324853
this part is repeated:
dateadd(m, month(@your_date)-1, dateadd(yy, year(@your_date) - 1900, 0))-1,
which essentially is one of 100 ways to get "last day of last month"

if the day of week is not 7 (Sat), we need to make it 7, we do this by simply taking the day of week off! i.e. Wed is 4, so we take 4 days off to make .. Sat.  The trick is that IF it is already Sat, we take none off, hence isnull(nullif(@x, 7), 0) so that 7 becomes 0.

depends on @@datefirst being 1 for Sunday (pretty much all English dbs)
0
 
LVL 19

Expert Comment

by:frankytee
ID: 20324958
typo in mine, it should have been 7 instead of a 6.
declare @dtX as smalldatetime
set @dtx = getdate() -(day(getdate()))
select
 case DATEPART ( dw , @dtx )
   when 7 then @dtx
   else @dtx - DATEPART( dw , @dtx )
 end as 'LastSaturdayOfPreviousMonth'
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Ever wondered why sometimes your SQL Server is slow or unresponsive with connections spiking up but by the time you go in, all is well? The following article will show you how to install and configure a SQL job that will send you email alerts includ…
Ready to get certified? Check out some courses that help you prepare for third-party exams.
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…
Via a live example combined with referencing Books Online, show some of the information that can be extracted from the Catalog Views in SQL Server.

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question