0% found this document useful (0 votes)
49 views

Lecture 11sdcdc

Here are the queries to solve the problems: 1. To find increment date: SELECT ADD_MONTHS(SYSDATE,6) FROM DUAL; 2. To find no of days to wait: SELECT TRUNC(ADD_MONTHS(SYSDATE,6)-SYSDATE) FROM DUAL; This uses the ADD_MONTHS function to add 6 months to the current date returned by SYSDATE. TRUNC is used to truncate the time portion and give only the number of days.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views

Lecture 11sdcdc

Here are the queries to solve the problems: 1. To find increment date: SELECT ADD_MONTHS(SYSDATE,6) FROM DUAL; 2. To find no of days to wait: SELECT TRUNC(ADD_MONTHS(SYSDATE,6)-SYSDATE) FROM DUAL; This uses the ADD_MONTHS function to add 6 months to the current date returned by SYSDATE. TRUNC is used to truncate the time portion and give only the number of days.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 39

ORACLE DATABASE

LECTURE 11
Today’s Agenda

• Functions In Oracle

• The DUAL Table

• Various DATE Functions

• Date Arithmetic
Functions In Oracle

 A Function is a named block of code designed to achieve a


particular task and just like a programming language , Oracle
too has a huge collection of predefined functions.

 These functions are further sub-divided into following


categories:
 Date Functions
 String Functions
 Numeric Functions
 Conversion Functions
 Group Functions
 Miscellaneous Functions
The Dual Table

 To understand DUAL table , try to predict the output of the


following query:

 Select 2+2 from Students;

 You might think that the above query is wrong and will give
error. But it is not so.

 The query is perfectly valid and will return 4 because Oracle


permits us to write expressions or function calls with the Select
command .
The Dual Table

 The only problem is that the output 4 will be returned as many


times as there are rows in the table.

 So if we imagine that our STUDENTS table contains 6 rows ,


then the output will be:
2+2
==========
4
4
4
4
4
4
The Dual Table

 To overcome this problem we have 2 solutions:


 Create a table with just one row and then use it for such general purpose
queries
OR
 Use the DUAL table provided by Oracle for such situations

 The DUAL table is a special table that belongs to the user SYS but


it is accessible to all users.

 It has just one column named DUMMY with the data type
VARCHAR2 and contains one row with a value X.
The Dual Table

 This can be verified from the following screenshot.

 So for all our general purpose queries and function calls we will
be using DUAL
Date Functions In Oracle

 Given on next slide are  the most commonly used Oracle Date
Functions .

 The functions helps us perform various operations on Dates as


well as handle date and time data easily and more effectively.
Date Functions In Oracle

.
Function Description
sysdate() Returns the current system date and time

add_months(date,n) Returns a date value after adding ‘n’ months


to the date ‘x’.
last_day(date) Returns the last day of the month of a
specified date.
next_day(date,str) Get the first weekday that is later than a
specified date.
months_between(date1,date2) Return the number of months between two
dates.
greatest() Returns the greatest date amongst a set of
dates
least() Returns the least date amongst a set of dates

extract() Extracts a specific component  from a date


The Function Sysdate()

 Return the current system date and time of the operating


system.
The Function
Add_months()

 This function adds a number (n) representing month to


a date and returns the same day n months away.

 Syntax
 ADD_MONTHS(date_expression, month)

 Return Value
 If  date_expression is the last day of the month, the resulting date is always
the last day of the month e.g., adding 1 month to 29-FEB-2020 will result in
31-MAR-2020, not 29-MAR-2020.

 Otherwise, the function returns a date whose day is the same as the day
component of the date_expression
The Function
Add_months()
The Function
Add_months()
The Function
Last_day()

 This function takes a DATE argument and returns the last day


of the month of that date.

 Syntax
 LAST_DAY(date)

 Return Value
 Always returns a DATE value that represents the last day of the month
of that input date.
The Function
Last_day()
The Function
Next_day()

 This function returns the date of the first weekday specified by


day name that is later than the given date.

 Syntax
 NEXT_DAY(date,weekday)
 The weekday can be full name e.g., Tuesday or abbreviation e.g., Tue.

 Return Value
 Always returns a DATE value that represents the next weekday after the
date.
The Function
Next_day()
The Function
Months_between()

 This function returns the number of months between two dates.

 Syntax
 MONTHS_BETWEEN (date1, date2)

 Return Value
 If date1 comes after date2, then MONTHS_BETWEEN returns a positive number.
 If date1 comes before date2, then MONTHS_BETWEEN returns a negative
number.
 If date1 and date2 both fall on the last day or same day of their respective
months, then MONTHS_BETWEEN returns a whole number (no fractional
component).
 If date1 and date2 are in different months and at least one of the dates is not a
last day in the month, MONTHS_BETWEEN returns a fractional number.
 The fractional component is calculated on a 31-day month basis 
The Function
Months_between()
The Function Greatest()

 This function returns the greatest date from the set of dates
passed as argument.

 Syntax
 GREATEST(date1, date2, . . . . .)

 Return Value
 The date which is greater.
 A greater date is one which falls after the other dates.
The Function Greatest()

 The output is very surprising . How can 1-JAN be greater than 1-


APR ?.

 This is because in Oracle the function greatest() is overloaded to


work on Numbers , Varchar2 as well as Date

 So , in this case Oracle is assuming all the dates to be varchar2 and


as we know ‘J’ is greater than ‘A’ , so 1-JAN is greater than 1-APR
Solution

 To solve the above problem , we must forcibly convert these


dates to varchar2 and this is done by using a function called
TO_DATE()
The Function Least()

 This function returns the smallest date from the set of dates
passed as argument.

 Syntax
 LEAST(date1, date2, . . . . .)

 Return Value
 The date which is smallest.
 A smaller date is one which falls before the other dates.
The Function Least()

 The function least() is also overloaded so here also we must


forcibly convert dates to varchar2 using the function
TO_DATE()
The Function Extract()

 This function extracts a specific component (year, month, day,


hour, minute, second, etc.,) from the date passed as argument.

 Syntax
 EXTRACT(<field> FROM <source_date>)
 Field can be YEAR / MONTH / DAY  

 Return Value
 Returns the value of the field of the source.
The Function Least()
Oracle Date Arithmetic

 We can perform lot of arithmetic operations on DATE


datatype.

 These are :
 Adding or subtracting a number to or from a date
 Subtracting two dates to find the number of days between those
 Adding hours to a date
Adding And Subtracting
Days

Adding or subtracting a number form a date always performs


operation on the day part of the date
Adding Year
Subtracting 2 Dates

Subtracting two dates always returns number of days between


them
Guess The Output ?

 Select sysdate-to_date(‘12-Jun-20’) from dual;

 Surprised !!!

 Many of us will expect the output to be 0 as both the dates are


same , but it is not the case .
Reason

 Why the result is not 0 ?

 This is because the function sysdate stores time up to the


current second while date constant like ‘12-Jun-20’ store time
of midnight i.e 12:00:00 AM.

 So the difference is the current time – midnight , converted


into days.
Solution

 To solve the above problem we must set the current time in


sysdate to midnight 12:00:00 .

 This is done by calling the function TRUNC() which accepts a


DATE as argument and truncates it’s time part to midnight
12:00:00
Solution
Queries

 WAQ to display number of days remaining in the current


month

 WAQ to display number of days India has remained in


lockdown
Queries

 WAQ to display name of every employee along with no of


years for which he has been working in the company
Queries

 To convert the years into whole number we can use the


function ROUND() which rounds off the fractional part.
Queries

 Suppose you are hired on a new job today , but with a salary
which is less than what you had expected . However the HR
manager has promised to raise your salary on the first day of
the next month after 6 months.

 Find out:
 Your increment date
 No of days you have to wait for increment
Queries

You might also like