Quantcast
Channel: Grassroots Oracle
Viewing all articles
Browse latest Browse all 405

More fun with dates

$
0
0
Last week I had a post reminding us to consider the time component of our date data types.

Here I'm just listing some fun with dates, either from single row sql expressions or cool little queries.

select 
sysdate today
,trunc(sysdate) midnight_today
,trunc(sysdate)+1/86400 one_second
,trunc(sysdate)+2/24 two_hours
,trunc(sysdate)+30/60/24 thirty_minutes
,trunc(sysdate) + interval '2:30' hour to minute two_hour_thirty
,trunc(sysdate,'mm') start_of_month
,trunc(sysdate,'yy') start_of_year
,add_months(trunc(sysdate,'yy'),6) financial_year
,extract(year from sysdate) year_as_number
,to_char(sysdate,'yyyy') year_as_varchar2
,(sysdate - add_months(sysdate,6)) year to month interval_months
,(Sysdate-(sysdate+2+30/60/24)) day(9) to second interval_daysec
,to_date('2012','yyyy') start_of_month
,last_day(sysdate) end_of_month
,date '2012-02-28' + 1 leap_year
,date '2011-02-28' + 1 non_leap_year
,date '2012-02-28' + interval '1' day only_during_leap_year
,date '1582-10-4' + 1 gregorian_changeover
,to_date('01-01-4712bc','dd-mm-yyyybc') scaliger_start
,to_date(1,'j') easier_scaliger_start
,to_date('31-12-9999','dd-mm-yyyy') end_of_time
,to_date('01-01-98','dd-mm-yy') legacy_wrong_century
,to_date('01-01-98','dd-mm-rr') legacy_better_format
from dual;

-- Generate first day of each month
select add_months(trunc(sysdate,'yy'),rownum-1) months
from dual connect by level <= 12;

MONTHS
---------------------
01/01/2012 00:00:00
01/02/2012 00:00:00
01/03/2012 00:00:00
01/04/2012 00:00:00
01/05/2012 00:00:00
01/06/2012 00:00:00
01/07/2012 00:00:00
01/08/2012 00:00:00
01/09/2012 00:00:00
01/10/2012 00:00:00
01/11/2012 00:00:00
01/12/2012 00:00:00

12 rows selected

-- Generate list of this year's weekends
select dt from (
select trunc(sysdate,'yy')+rownum-1 dt
from dual connect by level <= 365)
where to_char(dt,'dy') in ('sat','sun');

DT
---------------------
01/01/2012 00:00:00
07/01/2012 00:00:00
08/01/2012 00:00:00
14/01/2012 00:00:00
...
23/12/2012 00:00:00
29/12/2012 00:00:00
30/12/2012 00:00:00

105 rows selected

select sysdate@! wtf_is_this from dual;

Further reading on SQL injection with dates


Viewing all articles
Browse latest Browse all 405

Latest Images

Trending Articles



Latest Images