<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cogniza &#187; Transact-SQL</title>
	<atom:link href="http://cogniza.com/wordpress/tag/transact-sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://cogniza.com/wordpress</link>
	<description>Business-Intelligence Specialists</description>
	<lastBuildDate>Mon, 15 Mar 2010 20:22:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SQL Server: MaximumDate() Function</title>
		<link>http://cogniza.com/wordpress/2007/01/26/sql-server/</link>
		<comments>http://cogniza.com/wordpress/2007/01/26/sql-server/#comments</comments>
		<pubDate>Fri, 26 Jan 2007 15:04:05 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Transact-SQL]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=96</guid>
		<description><![CDATA[A SQL Server, scalar-value function that returns the greater of two dates.]]></description>
			<content:encoded><![CDATA[<p>A SQL Server, scalar-value function that returns the greater of two dates.<span id="more-96"></span></p>
<pre>set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO

/*----------------------------------------------------------------------------------------------------
Author:        Craig Buchanan
Date:        2/6/2006
Description:    Returns the greater of two dates
Parameters:    @Date1 - datetime to be compared
@Date2 - datetime to be compared
----------------------------------------------------------------------------------------------------*/
CREATE FUNCTION [dbo].[MaximumDate] (
@Date1    datetime,
@Date2    datetime
)

RETURNS datetime AS
BEGIN

RETURN CASE
WHEN @Date1 IS NULL AND @Date2 IS NULL THEN NULL
WHEN @Date1 IS NULL THEN @Date2
WHEN @Date2 IS NULL THEN @Date1
WHEN @Date1 &gt; @Date2 THEN @Date1
WHEN @Date2 &gt; @Date1 THEN @Date2
WHEN @Date2 = @Date1 THEN @Date2
ELSE NULL
END

END</pre>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2007/01/26/sql-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server: MinimumDate() Function</title>
		<link>http://cogniza.com/wordpress/2007/01/26/sql-server-minimumdate-function/</link>
		<comments>http://cogniza.com/wordpress/2007/01/26/sql-server-minimumdate-function/#comments</comments>
		<pubDate>Fri, 26 Jan 2007 15:02:30 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Transact-SQL]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=95</guid>
		<description><![CDATA[A SQL Server, scalar-value function that returns the lessor of two dates.
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
/*----------------------------------------------------------------------------------------------------
Author:        Craig Buchanan
Date:        2/6/2006
Description:    Returns the lessor of two dates
Parameters:    @Date1 - datetime to be compared
@Date2 - datetime to be [...]]]></description>
			<content:encoded><![CDATA[<p>A SQL Server, scalar-value function that returns the lessor of two dates.<span id="more-95"></span></p>
<pre>set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
/*----------------------------------------------------------------------------------------------------
Author:        Craig Buchanan
Date:        2/6/2006
Description:    Returns the lessor of two dates
Parameters:    @Date1 - datetime to be compared
@Date2 - datetime to be compared
----------------------------------------------------------------------------------------------------*/
CREATE FUNCTION [dbo].[MinimumDate] (
@Date1    datetime,
@Date2    datetime
)
RETURNS datetime AS
BEGIN

RETURN CASE
WHEN @Date1 IS NULL AND @Date2 IS NULL THEN NULL
WHEN @Date1 IS NULL THEN @Date2
WHEN @Date2 IS NULL THEN @Date1
WHEN @Date1 &lt; @Date2 THEN @Date1
WHEN @Date2 &lt; @Date1 THEN @Date2
WHEN @Date2 = @Date1 THEN @Date2
ELSE NULL
END

END</pre>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2007/01/26/sql-server-minimumdate-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sql Server: DateRanges() Function</title>
		<link>http://cogniza.com/wordpress/2006/05/25/sql-server-dateranges-function/</link>
		<comments>http://cogniza.com/wordpress/2006/05/25/sql-server-dateranges-function/#comments</comments>
		<pubDate>Thu, 25 May 2006 16:37:08 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Functions]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Date/Time]]></category>
		<category><![CDATA[Transact-SQL]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=79</guid>
		<description><![CDATA[This user-defined function creates a table of date ranges.]]></description>
			<content:encoded><![CDATA[<p>This user-defined function creates a table of date ranges.<span id="more-79"></span></p>
<p><code> --================================================================================<br />
--Author:    Craig <a href="mailto:Buchanan;craig.buchanan@cogniza.com" title="Linkification: mailto:Buchanan;craig.buchanan@cogniza.com" class="linkification-ext" style="color: #ffcc33">Buchanan;craig.buchanan@cogniza.com</a><br />
--Purpose:    Generates a table of data ranges (the most recent 12 months, plus<br />
--        three of Crystal Reports named-date ranges: MonthToDate,LastFullMonth<br />
--        and YearToDate<br />
--Parameters:    None<br />
--Returns:    a table of date range values<br />
--================================================================================<br />
DROP FUNCTION dbo.DateRanges<br />
GO<br />
CREATE FUNCTION dbo.DateRanges ()<br />
RETURNS @DateRangeTable TABLE (<br />
[Sequence]    decimal,<br />
StartDate    smalldatetime,<br />
EndDate        smalldatetime,<br />
Value        varchar(25),<br />
[Description]    varchar(20)<br />
)<br />
AS<br />
BEGIN<br />
--grab the system's date/time (using a view)<br />
DECLARE @EndDate    Datetime<br />
SELECT    @EndDate = Now<br />
FROM    dbo.GetNow<br />
--calculate the first date of the current month<br />
DECLARE @FirstOfMonth    Datetime<br />
SET @FirstOfMonth = CONVERT(VARCHAR,DatePart(m,@EndDate)) + '/1/' + CONVERT(CHAR(4),DatePart(yyyy,@EndDate))<br />
--calculate the first day of the month, 12 months ago<br />
DECLARE @StartDate    Datetime<br />
SET @StartDate = DateAdd(m,-12,@FirstOfMonth)<br />
--create a sequence number generator<br />
DECLARE @i        int<br />
SET @i = 1<br />
--insert 12 months of data<br />
WHILE @StartDate &lt; @FirstOfMonth<br />
BEGIN<br />
INSERT INTO @DateRangeTable (<br />
[Sequence],<br />
StartDate,<br />
EndDate,<br />
Value,<br />
[Description]<br />
)<br />
VALUES    (<br />
@i,<br />
@StartDate,<br />
DateAdd(m,1,@StartDate)-1,<br />
--create a value in the format i;StartDate:EndDate<br />
--ensure i is 0 padded<br />
Right( '0' + convert(varchar, @i), 2) + ';' +<br />
CONVERT(CHAR(10),@StartDate,110) + ':' +<br />
CONVERT(CHAR(10),DateAdd(m,1,@StartDate)-1,110),<br />
DATENAME(mm, @StartDate) + ' ' + CONVERT(VARCHAR,DATEPART(yyyy, @StartDate))<br />
)<br />
--add a month; increment counter<br />
SET @StartDate = DateAdd(m,1,@StartDate)<br />
SET @i = @i + 1<br />
END<br />
--add crystal report data ranges in the format index;DateRange<br />
--'Year to Date'<br />
INSERT INTO @DateRangeTable ([Sequence],StartDate,EndDate,Value,[Description])<br />
VALUES    (<br />
@i,<br />
'1/1/' + CONVERT(CHAR(4),DatePart(yyyy, @EndDate)),<br />
CONVERT(CHAR(10),@EndDate,110),<br />
Right( '0' + convert(varchar, @i), 2) + ';YearToDate','Year To Date'<br />
)<br />
SET @i = @i + 1<br />
--'Last Full Month'<br />
INSERT INTO @DateRangeTable ([Sequence],StartDate,EndDate,Value,[Description])<br />
VALUES    (<br />
@i,<br />
CONVERT(CHAR(10),DateAdd(m,-1,@FirstOfMonth),110),<br />
CONVERT(CHAR(10),@FirstOfMonth-1,110),<br />
Right( '0' + convert(varchar, @i), 2) + ';LastFullMonth','Last Full Month'<br />
)<br />
SET @i = @i + 1<br />
--'Month to Date'<br />
INSERT INTO @DateRangeTable ([Sequence],StartDate,EndDate,Value,[Description])<br />
VALUES    (<br />
@i,<br />
CONVERT(VARCHAR,DatePart(m, @EndDate)) + '/1/' + CONVERT(CHAR(4),DatePart(yyyy, @EndDate)),<br />
CONVERT(CHAR(10),@EndDate,110),<br />
Right( '0' + convert(varchar, @i), 2) + ';MonthToDate','Month To Date'<br />
)<br />
SET @i = @i + 1<br />
RETURN<br />
END<br />
GO<br />
GRANT SELECT ON dbo.DateRanges TO PUBLIC<br />
GO</code></p>
<p><a href="/wordpress/wp-content/uploads/2006/05/DateRanges.sql.txt" id="p80">DateRanges SQL Script</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2006/05/25/sql-server-dateranges-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sql Server: GetNow View</title>
		<link>http://cogniza.com/wordpress/2006/05/25/sql-server-getnow-view/</link>
		<comments>http://cogniza.com/wordpress/2006/05/25/sql-server-getnow-view/#comments</comments>
		<pubDate>Thu, 25 May 2006 13:38:14 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Transact-SQL]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=78</guid>
		<description><![CDATA[The Sql Server GETDATE() function not allowed in the body of user-defined functions, as it is non-deterministic. The GetNow view provides a means to generate a system date/time that can be used in Sql Server user-defined functions.]]></description>
			<content:encoded><![CDATA[<p>The Sql Server GETDATE() function not allowed in the body of user-defined functions, as it is non-deterministic.  The GetNow view provides a means to generate a system date/time that can be used in Sql Server user-defined functions.</p>
<p><span id="more-78"></span><code>DROP VIEW  dbo.GetNow<br />
GO<br />
CREATE VIEW dbo.GetNow AS<br />
SELECT    GetDate() Now<br />
GO<br />
GRANT SELECT ON dbo.GetNow TO PUBLIC<br />
GO</code></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2006/05/25/sql-server-getnow-view/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
