Solved

How to call this function

Posted on 2013-01-22
7
378 Views
Last Modified: 2013-01-22
I want to calculate 72 hours elapsed time but exclude the weekends. I found this function

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=61519&SearchTerms=F_TABLE_DATE.

I can call it directly like this:
 SELECT * FROM   F_TABLE_DATE('2012-12-07 10:55:25.220', GETDATE()) d
    WHERE
  d.[DAY_OF_WEEK] BETWEEN 2 AND 6

Open in new window


But not sure how to call it. This is my sql but doesnt work

SELECT *
 FROM dbo.NonMemberProvider
 WHERE officecalled IS NULL
 AND DATEDIFF(hour, UPDATEDate, GETDATE()) > 72	
 AND  ( SELECT * FROM F_TABLE_DATE(UPDATEDate, GETDATE()) 
        WHERE
  d.[DAY_OF_WEEK] BETWEEN 2 AND 6 )

Open in new window

0
Comment
Question by:Camillia
  • 4
  • 2
7 Comments
 
LVL 33

Accepted Solution

by:
knightEknight earned 500 total points
ID: 38807422
-- here's something to try along the same line of thinking:

SELECT *
 FROM dbo.NonMemberProvider
 WHERE officecalled IS NULL
 AND DATEDIFF(hour, UPDATEDate, GETDATE()) > 72      
 AND  DATEPART( WEEKDAY, UPDATEDate ) between 2 and 6
0
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 38807424
it think you want to "CROSS APPLY" that table function:
SELECT t.*
 FROM dbo.NonMemberProvider t
  CROSS APPLY F_TABLE_DATE(t.UPDATEDate, GETDATE())  f
 WHERE t.officecalled IS NULL
 AND DATEDIFF(hour, t.UPDATEDate, GETDATE()) > 72	
 AND f.[DAY_OF_WEEK] BETWEEN 2 AND 6  

Open in new window

0
 
LVL 7

Author Comment

by:Camillia
ID: 38807468
Seems like knight is correct. Cross Apply one gives me repeated rows.
Anyway to exclude holidays?
0
Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

 
LVL 33

Expert Comment

by:knightEknight
ID: 38807517
Not unless you have a specific holiday or set of holidays in mind.  Certain holidays fall on different dates each year (for example, first Monday of the month), whereas others are always on the same day, in which case:

SELECT *
 FROM dbo.NonMemberProvider
 WHERE officecalled IS NULL
 AND DATEDIFF(hour, UPDATEDate, GETDATE()) > 72      
 AND  DATEPART( WEEKDAY, UPDATEDate ) between 2 and 6
AND NOT ( DATEPART(month,UPDATEDate)=12 and DATEPART(day,UPDATEDate)=25 )  -- excludes December 25
0
 
LVL 7

Author Comment

by:Camillia
ID: 38807539
Should I create a Holiday table and join to that?
0
 
LVL 33

Expert Comment

by:knightEknight
ID: 38807556
Yes, that could work... then you could excludes dates in that table:

SELECT *
 FROM dbo.NonMemberProvider T
 WHERE officecalled IS NULL
 AND DATEDIFF(hour, UPDATEDate, GETDATE()) > 72      
 AND  DATEPART( WEEKDAY, UPDATEDate ) between 2 and 6
 and UPDATEDate not in ( select holdate from HolidayTable )
0
 
LVL 33

Expert Comment

by:knightEknight
ID: 38807562
actually, my last post assumes UPDATEDate is a date type(as opposed to a datetime).  If it is a datetime then you could cast it like this, but doing this will slow down your query considerably:

and cast(UPDATEDate as DATE) not in ( select holdate from HolidayTable )
0

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

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

In SQL Server, when rows are selected from a table, does it retrieve data in the order in which it is inserted?  Many believe this is the case. Let us try to examine for ourselves with an example. To get started, use the following script, wh…
Naughty Me. While I was changing the database name from DB1 to DB_PROD1 (yep it's not real database name ^v^), I changed the database name and notified my application fellows that I did it. They turn on the application, and everything is working. A …
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…

856 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