Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# Oracle Weekends only from the last 6 months onwards

Posted on 2011-02-28
Medium Priority
477 Views
Let's say I have a table that has 2 coloumns:

TicketNumber
DateOpened - (YYYY-MM-DD HH24:MI:SS format)

I would like to get only the tickets opened during the weekends (From Friday at 19:00:00 to Monday at 07:00:00) from 6 months ago up to the last weekend. this would be ran every monday morning at 7:30am

what would be the optimized way of doing this?

thanks!
0
Question by:lemmohr
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• Learn & ask questions
• 4

LVL 74

Expert Comment

ID: 34997993
DateOpened - (YYYY-MM-DD HH24:MI:SS format)

does that mean dateopened is actually a string type rather than a date type

or just that you prefer to see date types converted to strings in that format?
0

LVL 74

Accepted Solution

sdstuber earned 2000 total points
ID: 34998031
assuming it really is a date then...

SELECT *
FROM yourtable
WHERE (TO_CHAR(dateopened, 'Dy') = 'Fri' AND dateopened >= TRUNC(dateopened) + 19 / 24)
OR (TO_CHAR(dateopened, 'Dy') = 'Mon' AND dateopened <= TRUNC(dateopened) + 7 / 24)
OR (TO_CHAR(dateopened, 'Dy') IN ('Sat', 'Sun'))
AND dateopened >= ADD_MONTHS(TRUNC(SYSDATE, 'mm') - 6)
0

LVL 74

Expert Comment

ID: 34998045
if it is a string type then, do the same thing, but convert it to a date first

SELECT *
FROM yourtable
WHERE (TO_CHAR(TO_DATE(dateopened, 'yyyy-mm-dd hh24:mi:ss'), 'Dy') = 'Fri'
AND TO_DATE(dateopened, 'yyyy-mm-dd hh24:mi:ss') >=
TRUNC(TO_DATE(dateopened, 'yyyy-mm-dd hh24:mi:ss')) + 19 / 24)
OR (TO_CHAR(TO_DATE(dateopened, 'yyyy-mm-dd hh24:mi:ss'), 'Dy') = 'Mon'
AND TO_DATE(dateopened, 'yyyy-mm-dd hh24:mi:ss') <=
TRUNC(TO_DATE(dateopened, 'yyyy-mm-dd hh24:mi:ss')) + 7 / 24)
OR (TO_CHAR(TO_DATE(dateopened, 'yyyy-mm-dd hh24:mi:ss'), 'Dy') IN ('Sat', 'Sun'))
AND TO_DATE(dateopened, 'yyyy-mm-dd hh24:mi:ss') >= ADD_MONTHS(TRUNC(SYSDATE, 'mm') - 6)
0

Author Closing Comment

ID: 34998875
this is perfect, i forgot to mention that it is a date type
0

LVL 74

Expert Comment

ID: 34998887
glad I could help,  remember  dates don't have formats.

Only strings do
0

## Featured Post

Question has a verified solution.

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

Working with Network Access Control Lists in Oracle 11g (part 1) Part 2: http://www.e-e.com/A_9074.html So, you upgraded to a shiny new 11g database and all of a sudden every program that used UTL_MAIL, UTL_SMTP, UTL_TCP, UTL_HTTP or any oth…
I remember the day when someone asked me to create a user for an application developement. The user should be able to create views and materialized views and, so, I used the following syntax: (CODE) This way, I guessed, I would ensure that use…
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
Via a live example, show how to take different types of Oracle backups using RMAN.
###### Suggested Courses
Course of the Month9 days, 3 hours left to enroll

#### 604 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.