I want to change the start day of week in Oracle, and I need to calculate some reports for each week from daily/hourly data.
Through lot of Google search I got only NLS_TERROTORY
option, from which I don't know how to set to TUESDAY
. Even if there is a territory, then how do change to different day in future. Thanks in advance!
相关问题
- Can I skip certificate verification oracle utl_htt
- how to calculate sum time with data type char in o
- keeping one connection to DB or opening closing pe
- System.Data.OracleClient not working with 64 bit O
- How can I get rid of dynamic SQL
相关文章
- node连接远程oracle报错
- oracle 11g expdp导出作业调用失败,提示丢包。
- 执行一复杂的SQL语句效率高,还是执行多少简单的语句效率高
- Oracle equivalent of PostgreSQL INSERT…RETURNING *
- Difference between FOR UPDATE OF and FOR UPDATE
- Oracle USING clause best practice
- Is there a method in PL/SQL to convert/encode text
- PHP PDO installation on windows (xampp)
You can create a package to contain custom functions functions relating to the new start of the week:
Note: numbering of weeks of the year is based on the first week of the year containing the first starting day of a week (i.e. Tuesday - so if Jan 1st is a Wednesday then the first week of the year would start on the Jan 7th). If you want a different logic then you will need to modify the
WEEK_OF_YEAR
function.SQL Fiddle
Oracle 11g R2 Schema Setup:
Query 1:
Results:
Us, Europeans, have Monday as the first day of the week. Therefore, if you set NLS_TERRITORY to a country in Europe (such as United Kingdom, or - why not - Croatia), you'll get "1" as the result. Here's a short demo:
[EDIT] Custom function that returns day of the week:
With this PL/SQL block you get all possible days of week start:
You see, there is no territory where first day of week is Tuesday, so you have to build your own function. Solution from Littlefoot should work well.
Here is a solution I derived on my own with 3 Views for 2015th year and can be configured to run dynamically for any year.
--To calculate all days of one complete year.
--To group all weeks current year and next(if any in end of year)
--week start date, end date and week number
-- TO check the created Views
--week all dates of year with week start date, end date and week number