When it comes to reporting there is always a need to modify the date columns to show in different formats, so let’s start seeing how things are done
To change the format of the date column to a different format we use FORMAT function in SQL Server 2012 and TO_CHAR function in Oracle as shown below.
SQL Server FORMAT (value, format [, culture ] )
Example:
Select format(getdate(),'MMddyyyy')
as todays date is 06/20/2012 the output of the query is "06202012", so based on what we specify as a second parameter to function we will get different results, below are the list of parameters which can be used to get desired format.
Note: As of now format is case sensitive so make sure to use "MM" for month not "mm"
“format” parameters:
year |
yy, yyyy |
month |
MM, M |
month name |
MMM, MMMMM |
day |
dd, d |
hour |
hh, for 24 hours its HH |
minute |
m |
second |
ss, s |
millisecond |
fffff |
Oracle TO_CHAR( datevalue, [ format_mask ] )
Example:
select
to_char(sysdate,'MM/DD/YY')
from dual;
as todays date is 06/20/2012 the output of the query is "06202012", so based on what we specify as a second parameter ([format_mask]) to function we will get different results, below are the list of parameters which can be used to get desired format.
“format_mask” parameters:
year |
YY, YYYY |
month |
MM |
month name |
MON, MONTH |
day |
DD, D |
hour |
hh |
minute |
mi |
second |
ss |
milli second |
sssss |
Other Manipulations
Let’s see some other useful manipulations below; the last day of a month can be obtained using below script.
SQL Server
Select DATEADD(S,-1,DATEADD(MM, DATEDIFF(M,0,GETDATE())+1,0))
If we change the value highlighted in red to 0 we get the last month...so on
SQL Server 2012
Select EOMONTH ( getdate(),1 )
Oracle
SELECT SYSDATE,
LAST_DAY(SYSDATE)
from DUAL;
The date of occurrence of a specific day of a week can be obtained using below script.
SQL Server
Select DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0)
If we change the value highlighted in red to 1 then we get Tuesday...so on.
Oracle
SELECT SYSDATE,
NEXT_DAY(SYSDATE, 'MONDAY')
from DUAL;
Thank you for reading this article, check out my other SQL Server vs. Oracle posts.