<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Reproducing a Canned Report using a Single SQL Statement</title>
	<atom:link href="http://hoopercharles.wordpress.com/2012/04/11/reproducing-a-canned-report-using-a-single-sql-statement/feed/" rel="self" type="application/rss+xml" />
	<link>http://hoopercharles.wordpress.com/2012/04/11/reproducing-a-canned-report-using-a-single-sql-statement/</link>
	<description>Miscellaneous Random Oracle Topics: Stop, Think, ... Understand</description>
	<lastBuildDate>Thu, 23 May 2013 04:02:42 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Log Buffer #267, A Carnival of the Vanities for DBAs &#124; The Pythian Blog</title>
		<link>http://hoopercharles.wordpress.com/2012/04/11/reproducing-a-canned-report-using-a-single-sql-statement/#comment-4617</link>
		<dc:creator><![CDATA[Log Buffer #267, A Carnival of the Vanities for DBAs &#124; The Pythian Blog]]></dc:creator>
		<pubDate>Sat, 14 Apr 2012 00:20:17 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=6252#comment-4617</guid>
		<description><![CDATA[[...] Reproducing a Canned Report using a Single SQL Statement is another good post by Charles Hooper. [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Reproducing a Canned Report using a Single SQL Statement is another good post by Charles Hooper. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charles Hooper</title>
		<link>http://hoopercharles.wordpress.com/2012/04/11/reproducing-a-canned-report-using-a-single-sql-statement/#comment-4611</link>
		<dc:creator><![CDATA[Charles Hooper]]></dc:creator>
		<pubDate>Thu, 12 Apr 2012 11:35:05 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=6252#comment-4611</guid>
		<description><![CDATA[Timo,

Thank you for the comment - you raise a very valid point.  In the article I made the following comment:
&lt;blockquote&gt;
&quot;On Oracle Database, we are able to use the TO_DATE function to almost reproduce the above translation table, although NLS settings that are in effect could produce results that require further adjustment.&quot;
&lt;/blockquote&gt;
When I wrote that statement, I expected that there was a simple format override for the TO_CHAR function that would permit altering the NLS settings for only the TO_CHAR function, similar to what is shown in the documentation:
http://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_functions_2113.htm

After seeing your comment, I went back to the following example in this blog article, trying the SQL statement with the NLS_TERRITORY values that you specified:
&lt;pre&gt;
SELECT
  TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1) MY_DATE,
  TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;D&#039;) AS D,
  MOD(TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;D&#039;),7) DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE(&#039;04/14/2012&#039;,&#039;MM/DD/YYYY&#039;) - TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;))+1;
 
MY_DATE   D DAY_OF_WEEK
--------- - -----------
26-MAR-12 2           2
27-MAR-12 3           3
28-MAR-12 4           4
29-MAR-12 5           5
30-MAR-12 6           6
31-MAR-12 7           0
01-APR-12 1           1
02-APR-12 2           2
03-APR-12 3           3
04-APR-12 4           4
05-APR-12 5           5
06-APR-12 6           6
07-APR-12 7           0
08-APR-12 1           1
09-APR-12 2           2
10-APR-12 3           3
11-APR-12 4           4
12-APR-12 5           5
13-APR-12 6           6
14-APR-12 7           0
&lt;/pre&gt;

FINLAND:
&lt;pre&gt;
alter session set nls_territory=finland;
 
SELECT
  TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1) MY_DATE,
  TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;D&#039;) AS D,
  MOD(TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;D&#039;),7) DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE(&#039;04/14/2012&#039;,&#039;MM/DD/YYYY&#039;) - TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;))+1;
 
MY_DATE    D DAY_OF_WEEK
---------- - -----------
26.03.2012 1           1
27.03.2012 2           2
28.03.2012 3           3
29.03.2012 4           4
30.03.2012 5           5
31.03.2012 6           6
01.04.2012 7           0
02.04.2012 1           1
03.04.2012 2           2
04.04.2012 3           3
05.04.2012 4           4
06.04.2012 5           5
07.04.2012 6           6
08.04.2012 7           0
09.04.2012 1           1
10.04.2012 2           2
11.04.2012 3           3
12.04.2012 4           4
13.04.2012 5           5
14.04.2012 6           6
&lt;/pre&gt;

AMERICA:
&lt;pre&gt;
alter session set nls_territory=america;
 
SELECT
  TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1) MY_DATE,
  TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;D&#039;) AS D,
  MOD(TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;D&#039;),7) DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE(&#039;04/14/2012&#039;,&#039;MM/DD/YYYY&#039;) - TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;))+1;
 
MY_DATE   D DAY_OF_WEEK
--------- - -----------
26-MAR-12 2           2
27-MAR-12 3           3
28-MAR-12 4           4
29-MAR-12 5           5
30-MAR-12 6           6
31-MAR-12 7           0
01-APR-12 1           1
02-APR-12 2           2
03-APR-12 3           3
04-APR-12 4           4
05-APR-12 5           5
06-APR-12 6           6
07-APR-12 7           0
08-APR-12 1           1
09-APR-12 2           2
10-APR-12 3           3
11-APR-12 4           4
12-APR-12 5           5
13-APR-12 6           6
14-APR-12 7           0
&lt;/pre&gt;

BANGLADESH:
&lt;pre&gt;
alter session set nls_territory=bangladesh;
 
SELECT
  TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1) MY_DATE,
  TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;D&#039;) AS D,
  MOD(TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;D&#039;),7) DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE(&#039;04/14/2012&#039;,&#039;MM/DD/YYYY&#039;) - TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;))+1;
 
MY_DATE    D DAY_OF_WEEK
---------- - -----------
26-03-2012 4           4
27-03-2012 5           5
28-03-2012 6           6
29-03-2012 7           0
30-03-2012 1           1
31-03-2012 2           2
01-04-2012 3           3
02-04-2012 4           4
03-04-2012 5           5
04-04-2012 6           6
05-04-2012 7           0
06-04-2012 1           1
07-04-2012 2           2
08-04-2012 3           3
09-04-2012 4           4
10-04-2012 5           5
11-04-2012 6           6
12-04-2012 7           0
13-04-2012 1           1
14-04-2012 2           2
&lt;/pre&gt;

After spending a bit of time experimenting with different NLS format parameters inside the TO_CHAR function, it became apparent that the MOD function simply will not work for this solution for some NLS regions.  As a result, I am proposing a work-around:

FINLAND:
&lt;pre&gt;
alter session set nls_territory=finland;
 
SELECT
  TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1) MY_DATE,
  MOD(TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;D&#039;),7) AS OLD_DAY_OF_WEEK,
  TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;DY&#039;, &#039;nls_date_language=american&#039;) AS DAY,
  DECODE(TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;DY&#039;, &#039;nls_date_language=american&#039;),
    &#039;MON&#039;,2,
    &#039;TUE&#039;,3,
    &#039;WED&#039;,4,
    &#039;THU&#039;,5,
    &#039;FRI&#039;,6,
    &#039;SAT&#039;,0,
    &#039;SUN&#039;,1) AS DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE(&#039;04/14/2012&#039;,&#039;MM/DD/YYYY&#039;) - TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;))+1;
 
MY_DATE    OLD_DAY_OF_WEEK DAY DAY_OF_WEEK
---------- --------------- --- -----------
26.03.2012               1 MON           2
27.03.2012               2 TUE           3
28.03.2012               3 WED           4
29.03.2012               4 THU           5
30.03.2012               5 FRI           6
31.03.2012               6 SAT           0
01.04.2012               0 SUN           1
02.04.2012               1 MON           2
03.04.2012               2 TUE           3
04.04.2012               3 WED           4
05.04.2012               4 THU           5
06.04.2012               5 FRI           6
07.04.2012               6 SAT           0
08.04.2012               0 SUN           1
09.04.2012               1 MON           2
10.04.2012               2 TUE           3
11.04.2012               3 WED           4
12.04.2012               4 THU           5
13.04.2012               5 FRI           6
14.04.2012               6 SAT           0
&lt;/pre&gt;
 
AMERICA:
&lt;pre&gt;
alter session set nls_territory=america;
 
SELECT
  TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1) MY_DATE,
  MOD(TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;D&#039;),7) AS OLD_DAY_OF_WEEK,
  TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;DY&#039;, &#039;nls_date_language=american&#039;) AS DAY,
  DECODE(TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;DY&#039;, &#039;nls_date_language=american&#039;),
    &#039;MON&#039;,2,
    &#039;TUE&#039;,3,
    &#039;WED&#039;,4,
    &#039;THU&#039;,5,
    &#039;FRI&#039;,6,
    &#039;SAT&#039;,0,
    &#039;SUN&#039;,1) AS DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE(&#039;04/14/2012&#039;,&#039;MM/DD/YYYY&#039;) - TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;))+1;
 
MY_DATE   OLD_DAY_OF_WEEK DAY DAY_OF_WEEK
--------- --------------- --- -----------
26-MAR-12               2 MON           2
27-MAR-12               3 TUE           3
28-MAR-12               4 WED           4
29-MAR-12               5 THU           5
30-MAR-12               6 FRI           6
31-MAR-12               0 SAT           0
01-APR-12               1 SUN           1
02-APR-12               2 MON           2
03-APR-12               3 TUE           3
04-APR-12               4 WED           4
05-APR-12               5 THU           5
06-APR-12               6 FRI           6
07-APR-12               0 SAT           0
08-APR-12               1 SUN           1
09-APR-12               2 MON           2
10-APR-12               3 TUE           3
11-APR-12               4 WED           4
12-APR-12               5 THU           5
13-APR-12               6 FRI           6
14-APR-12               0 SAT           0
&lt;/pre&gt;

BANGLADESH:
&lt;pre&gt;
alter session set nls_territory=bangladesh;

SELECT
  TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1) MY_DATE,
  MOD(TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;D&#039;),7) AS OLD_DAY_OF_WEEK,
  TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;DY&#039;, &#039;nls_date_language=american&#039;) AS DAY,
  DECODE(TO_CHAR(TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1), &#039;DY&#039;, &#039;nls_date_language=american&#039;),
    &#039;MON&#039;,2,
    &#039;TUE&#039;,3,
    &#039;WED&#039;,4,
    &#039;THU&#039;,5,
    &#039;FRI&#039;,6,
    &#039;SAT&#039;,0,
    &#039;SUN&#039;,1) AS DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE(&#039;04/14/2012&#039;,&#039;MM/DD/YYYY&#039;) - TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;))+1;
 
MY_DATE    OLD_DAY_OF_WEEK DAY DAY_OF_WEEK
---------- --------------- --- -----------
26-03-2012               4 MON           2
27-03-2012               5 TUE           3
28-03-2012               6 WED           4
29-03-2012               0 THU           5
30-03-2012               1 FRI           6
31-03-2012               2 SAT           0
01-04-2012               3 SUN           1
02-04-2012               4 MON           2
03-04-2012               5 TUE           3
04-04-2012               6 WED           4
05-04-2012               0 THU           5
06-04-2012               1 FRI           6
07-04-2012               2 SAT           0
08-04-2012               3 SUN           1
09-04-2012               4 MON           2
10-04-2012               5 TUE           3
11-04-2012               6 WED           4
12-04-2012               0 THU           5
13-04-2012               1 FRI           6
14-04-2012               2 SAT           0
&lt;/pre&gt;

The OLD_DAY_OF_WEEK and DAY columns, of course, could be removed from the above SQL statements.]]></description>
		<content:encoded><![CDATA[<p>Timo,</p>
<p>Thank you for the comment &#8211; you raise a very valid point.  In the article I made the following comment:</p>
<blockquote><p>
&#8220;On Oracle Database, we are able to use the TO_DATE function to almost reproduce the above translation table, although NLS settings that are in effect could produce results that require further adjustment.&#8221;
</p></blockquote>
<p>When I wrote that statement, I expected that there was a simple format override for the TO_CHAR function that would permit altering the NLS settings for only the TO_CHAR function, similar to what is shown in the documentation:<br />
<a href="http://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_functions_2113.htm" rel="nofollow">http://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_functions_2113.htm</a></p>
<p>After seeing your comment, I went back to the following example in this blog article, trying the SQL statement with the NLS_TERRITORY values that you specified:</p>
<pre>
SELECT
  TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1) MY_DATE,
  TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'D') AS D,
  MOD(TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'D'),7) DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE('04/14/2012','MM/DD/YYYY') - TO_DATE('03/26/2012','MM/DD/YYYY'))+1;
 
MY_DATE   D DAY_OF_WEEK
--------- - -----------
26-MAR-12 2           2
27-MAR-12 3           3
28-MAR-12 4           4
29-MAR-12 5           5
30-MAR-12 6           6
31-MAR-12 7           0
01-APR-12 1           1
02-APR-12 2           2
03-APR-12 3           3
04-APR-12 4           4
05-APR-12 5           5
06-APR-12 6           6
07-APR-12 7           0
08-APR-12 1           1
09-APR-12 2           2
10-APR-12 3           3
11-APR-12 4           4
12-APR-12 5           5
13-APR-12 6           6
14-APR-12 7           0
</pre>
<p>FINLAND:</p>
<pre>
alter session set nls_territory=finland;
 
SELECT
  TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1) MY_DATE,
  TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'D') AS D,
  MOD(TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'D'),7) DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE('04/14/2012','MM/DD/YYYY') - TO_DATE('03/26/2012','MM/DD/YYYY'))+1;
 
MY_DATE    D DAY_OF_WEEK
---------- - -----------
26.03.2012 1           1
27.03.2012 2           2
28.03.2012 3           3
29.03.2012 4           4
30.03.2012 5           5
31.03.2012 6           6
01.04.2012 7           0
02.04.2012 1           1
03.04.2012 2           2
04.04.2012 3           3
05.04.2012 4           4
06.04.2012 5           5
07.04.2012 6           6
08.04.2012 7           0
09.04.2012 1           1
10.04.2012 2           2
11.04.2012 3           3
12.04.2012 4           4
13.04.2012 5           5
14.04.2012 6           6
</pre>
<p>AMERICA:</p>
<pre>
alter session set nls_territory=america;
 
SELECT
  TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1) MY_DATE,
  TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'D') AS D,
  MOD(TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'D'),7) DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE('04/14/2012','MM/DD/YYYY') - TO_DATE('03/26/2012','MM/DD/YYYY'))+1;
 
MY_DATE   D DAY_OF_WEEK
--------- - -----------
26-MAR-12 2           2
27-MAR-12 3           3
28-MAR-12 4           4
29-MAR-12 5           5
30-MAR-12 6           6
31-MAR-12 7           0
01-APR-12 1           1
02-APR-12 2           2
03-APR-12 3           3
04-APR-12 4           4
05-APR-12 5           5
06-APR-12 6           6
07-APR-12 7           0
08-APR-12 1           1
09-APR-12 2           2
10-APR-12 3           3
11-APR-12 4           4
12-APR-12 5           5
13-APR-12 6           6
14-APR-12 7           0
</pre>
<p>BANGLADESH:</p>
<pre>
alter session set nls_territory=bangladesh;
 
SELECT
  TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1) MY_DATE,
  TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'D') AS D,
  MOD(TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'D'),7) DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE('04/14/2012','MM/DD/YYYY') - TO_DATE('03/26/2012','MM/DD/YYYY'))+1;
 
MY_DATE    D DAY_OF_WEEK
---------- - -----------
26-03-2012 4           4
27-03-2012 5           5
28-03-2012 6           6
29-03-2012 7           0
30-03-2012 1           1
31-03-2012 2           2
01-04-2012 3           3
02-04-2012 4           4
03-04-2012 5           5
04-04-2012 6           6
05-04-2012 7           0
06-04-2012 1           1
07-04-2012 2           2
08-04-2012 3           3
09-04-2012 4           4
10-04-2012 5           5
11-04-2012 6           6
12-04-2012 7           0
13-04-2012 1           1
14-04-2012 2           2
</pre>
<p>After spending a bit of time experimenting with different NLS format parameters inside the TO_CHAR function, it became apparent that the MOD function simply will not work for this solution for some NLS regions.  As a result, I am proposing a work-around:</p>
<p>FINLAND:</p>
<pre>
alter session set nls_territory=finland;
 
SELECT
  TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1) MY_DATE,
  MOD(TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'D'),7) AS OLD_DAY_OF_WEEK,
  TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'DY', 'nls_date_language=american') AS DAY,
  DECODE(TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'DY', 'nls_date_language=american'),
    'MON',2,
    'TUE',3,
    'WED',4,
    'THU',5,
    'FRI',6,
    'SAT',0,
    'SUN',1) AS DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE('04/14/2012','MM/DD/YYYY') - TO_DATE('03/26/2012','MM/DD/YYYY'))+1;
 
MY_DATE    OLD_DAY_OF_WEEK DAY DAY_OF_WEEK
---------- --------------- --- -----------
26.03.2012               1 MON           2
27.03.2012               2 TUE           3
28.03.2012               3 WED           4
29.03.2012               4 THU           5
30.03.2012               5 FRI           6
31.03.2012               6 SAT           0
01.04.2012               0 SUN           1
02.04.2012               1 MON           2
03.04.2012               2 TUE           3
04.04.2012               3 WED           4
05.04.2012               4 THU           5
06.04.2012               5 FRI           6
07.04.2012               6 SAT           0
08.04.2012               0 SUN           1
09.04.2012               1 MON           2
10.04.2012               2 TUE           3
11.04.2012               3 WED           4
12.04.2012               4 THU           5
13.04.2012               5 FRI           6
14.04.2012               6 SAT           0
</pre>
<p>AMERICA:</p>
<pre>
alter session set nls_territory=america;
 
SELECT
  TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1) MY_DATE,
  MOD(TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'D'),7) AS OLD_DAY_OF_WEEK,
  TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'DY', 'nls_date_language=american') AS DAY,
  DECODE(TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'DY', 'nls_date_language=american'),
    'MON',2,
    'TUE',3,
    'WED',4,
    'THU',5,
    'FRI',6,
    'SAT',0,
    'SUN',1) AS DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE('04/14/2012','MM/DD/YYYY') - TO_DATE('03/26/2012','MM/DD/YYYY'))+1;
 
MY_DATE   OLD_DAY_OF_WEEK DAY DAY_OF_WEEK
--------- --------------- --- -----------
26-MAR-12               2 MON           2
27-MAR-12               3 TUE           3
28-MAR-12               4 WED           4
29-MAR-12               5 THU           5
30-MAR-12               6 FRI           6
31-MAR-12               0 SAT           0
01-APR-12               1 SUN           1
02-APR-12               2 MON           2
03-APR-12               3 TUE           3
04-APR-12               4 WED           4
05-APR-12               5 THU           5
06-APR-12               6 FRI           6
07-APR-12               0 SAT           0
08-APR-12               1 SUN           1
09-APR-12               2 MON           2
10-APR-12               3 TUE           3
11-APR-12               4 WED           4
12-APR-12               5 THU           5
13-APR-12               6 FRI           6
14-APR-12               0 SAT           0
</pre>
<p>BANGLADESH:</p>
<pre>
alter session set nls_territory=bangladesh;

SELECT
  TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1) MY_DATE,
  MOD(TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'D'),7) AS OLD_DAY_OF_WEEK,
  TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'DY', 'nls_date_language=american') AS DAY,
  DECODE(TO_CHAR(TO_DATE('03/26/2012','MM/DD/YYYY')+(LEVEL-1), 'DY', 'nls_date_language=american'),
    'MON',2,
    'TUE',3,
    'WED',4,
    'THU',5,
    'FRI',6,
    'SAT',0,
    'SUN',1) AS DAY_OF_WEEK
FROM
  DUAL
CONNECT BY
  LEVEL &lt;= (TO_DATE('04/14/2012','MM/DD/YYYY') - TO_DATE('03/26/2012','MM/DD/YYYY'))+1;
 
MY_DATE    OLD_DAY_OF_WEEK DAY DAY_OF_WEEK
---------- --------------- --- -----------
26-03-2012               4 MON           2
27-03-2012               5 TUE           3
28-03-2012               6 WED           4
29-03-2012               0 THU           5
30-03-2012               1 FRI           6
31-03-2012               2 SAT           0
01-04-2012               3 SUN           1
02-04-2012               4 MON           2
03-04-2012               5 TUE           3
04-04-2012               6 WED           4
05-04-2012               0 THU           5
06-04-2012               1 FRI           6
07-04-2012               2 SAT           0
08-04-2012               3 SUN           1
09-04-2012               4 MON           2
10-04-2012               5 TUE           3
11-04-2012               6 WED           4
12-04-2012               0 THU           5
13-04-2012               1 FRI           6
14-04-2012               2 SAT           0
</pre>
<p>The OLD_DAY_OF_WEEK and DAY columns, of course, could be removed from the above SQL statements.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Timo Raitalaakso</title>
		<link>http://hoopercharles.wordpress.com/2012/04/11/reproducing-a-canned-report-using-a-single-sql-statement/#comment-4610</link>
		<dc:creator><![CDATA[Timo Raitalaakso]]></dc:creator>
		<pubDate>Thu, 12 Apr 2012 07:45:16 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=6252#comment-4610</guid>
		<description><![CDATA[TO_CHAR(..,&#039;D&#039;) depends on your client session nls settings. Try following with different client session nls_territory.

select dt
     , to_char(dt,&#039;day&#039;) day
     , MOD(TO_CHAR(dt, &#039;D&#039;),7) 
     , MOD(dt-trunc(dt,&#039;IW&#039;)+1,7) dn
from (
 select TO_DATE(&#039;03/26/2012&#039;,&#039;MM/DD/YYYY&#039;)+(LEVEL-1) dt
   from dual 
connect by level&lt;8
);

alter session set nls_territory=finland;

alter session set nls_territory=america;

alter session set nls_territory=bangladesh;

NLS_DATE_TERRITORY would be nice to have as a parameter option in to_char(datetime).]]></description>
		<content:encoded><![CDATA[<p>TO_CHAR(..,&#8217;D') depends on your client session nls settings. Try following with different client session nls_territory.</p>
<p>select dt<br />
     , to_char(dt,&#8217;day&#8217;) day<br />
     , MOD(TO_CHAR(dt, &#8216;D&#8217;),7)<br />
     , MOD(dt-trunc(dt,&#8217;IW&#8217;)+1,7) dn<br />
from (<br />
 select TO_DATE(&#8217;03/26/2012&#8242;,&#8217;MM/DD/YYYY&#8217;)+(LEVEL-1) dt<br />
   from dual<br />
connect by level&lt;8<br />
);</p>
<p>alter session set nls_territory=finland;</p>
<p>alter session set nls_territory=america;</p>
<p>alter session set nls_territory=bangladesh;</p>
<p>NLS_DATE_TERRITORY would be nice to have as a parameter option in to_char(datetime).</p>
]]></content:encoded>
	</item>
</channel>
</rss>
