73

I have a user defined function in SQL called getBuisnessDays it takes @startdate and @enddate and returns the number of business days between the two dates. How can I call that function within my select?

Here's what I'd like to do..

SELECT getBusinessDays(a.opendate,a.closedate) 
FROM account a
WHERE ...
ΩmegaMan
  • 29,542
  • 12
  • 100
  • 122
madcolor
  • 8,105
  • 11
  • 51
  • 74
  • 3
    Just remember that UDFs can often kill query performance depending on how the optimizer reacts to them. They often mean processing row by row rather than set-based. For your situation you might be better off using a calendar table and selecting against that when needed. – Tom H Dec 12 '08 at 20:11

3 Answers3

124

Yes, you can do almost that:

SELECT dbo.GetBusinessDays(a.opendate,a.closedate) as BusinessDays
FROM account a
WHERE...
ΩmegaMan
  • 29,542
  • 12
  • 100
  • 122
user17670
  • 1,252
  • 1
  • 9
  • 2
13

If it's a table-value function (returns a table set) you simply join it as a Table

this function generates one column table with all the values from passed comma-separated list

SELECT * FROM dbo.udf_generate_inlist_to_table('1,2,3,4')
Roman Marusyk
  • 23,328
  • 24
  • 73
  • 116
jerryhung
  • 1,043
  • 6
  • 10
8

Use a scalar-valued UDF, not a table-value one, then you can use it in a SELECT as you want.

recursive
  • 83,943
  • 34
  • 151
  • 241