Sunday, June 8, 2014

SQL di ORACLE

Untuk membuat grant di oracle

SQL>grant select on nama_table to nama_database_yang_dituju;

Untuk membuat synonym di oracle

SQL> create synonym nama_table for nama_database_yang _digrant.nama_table;

Membuat fungsi untuk mencari selisih waktu

SQL> create or replace function datediff( p_what in varchar2,
  2                                       p_d1   in date,
  3                                       p_d2   in date ) return number
  4  as
  5      l_result    number;
  6  begin
  7      select (p_d2-p_d1) *
  8             decode( upper(p_what),
  9                     'SS', 24*60*60, 'MI', 24*60, 'HH', 24, NULL )
 10       into l_result from dual;
 11
 11      return l_result;
 12  end;
 13  /

Function created

SQL> create or replace view temp_view 
  2  as 
  3  select to_date('01-JAN-1999 12:02:04', 'dd-mon-yyyy hh24:mi:ss' ) d1, 
  4         to_date('15-MAR-1999 01:34:23', 'dd-mon-yyyy hh24:mi:ss' ) d2 
  5  from dual 
  6  / 
View created. 


sekarang tinggal memanggil fungsinya saja

SQL> select datediff( 'ss', d1, d2 ) seconds from temp_view;
   SECONDS
----------
   6269539
SQL> select datediff( 'mi', d1, d2 ) minutes from temp_view;
   MINUTES
----------
104492.317
SQL> select datediff( 'hh', d1, d2 ) hours from temp_view;

     HOURS
----------
1741.53861


menambah waktu pada date di oracle


    Tambahkan sehari. pilih to_date (’02-22-2008 10:30:30 ‘,’ mm-dd-yyyy HH24: mi: ‘ss) hari ini, to_date (’02-22-2008 10:30:30 ‘,’ mm-dd-yyyy HH24: mi: ‘ss) +1 next_day dari dual; HARI INI NEXT_DAY ————————- ————————- 02-22-08 10:30:30 02-23-08 10:30:30
    Tambahkan satu jam. pilih to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ‘ss) hari ini, to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ss ‘) + 1 / 24 next_hour dari dual; HARI INI NEXT_HOUR ———————— ———————— 02-22-08 10:30:30 02-22-08 11:30:30
    Tambahkan satu menit. pilih to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ‘ss) hari ini, to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ss ‘) + 1 / (24 * 60) next_min dari dual; HARI INI NEXT_MIN ———————— ———————— 02-22-08 10:30:30 02-22-08 10:31:30
    Tambahkan kedua. pilih to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ‘ss) hari ini, to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ss ‘) + 1 / (24 * 60 * 60) next_sec dari dual; HARI INI NEXT_SEC ———————— ———————— 02-22-08 10:30:30 02-22-08 10:30:31
    Kurangi sehari. pilih to_date (’02-22-2008 10:30:30 ‘,’ mm-dd-yyyy HH24: mi: ‘ss) hari ini, to_date (’02-22-2008 10:30:30 ‘,’ mm-dd-yyyy HH24: mi: ss ‘) – 1 prev_day dari dual; HARI INI PREV_DAY ————————- ————————- 02-22-08 10:30:30 02-21-08 10:30:30
    Kurangi jam. pilih to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ‘ss) hari ini, to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ss ‘) – 1 / 24 prev_hour dari dual; HARI INI PREV_HOUR ———————— ———————— 02-22-08 10:30:30 02-22-08 09:30:30
    Kurangi menit. pilih to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ‘ss) hari ini, to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ss ‘) – 1 / (24 * 60) prev_min dari dual; HARI INI PREV_MIN ———————— ———————— 02-22-08 10:30:30 02-22-08 10:29:30
    Kurangi detik. pilih to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ‘ss) hari ini, to_date (’02-22-08 10:30:30 ‘,’ mm-dd-yy HH24: mi: ss ‘) – 1 / (24 * 60 * 60) prev_sec dari dual; HARI INI PREV_SEC ———————— ———————— 02-22-08 10:30:30 02-22-08 10:30:29
    //===================================================================
    SELECT MENGGUNAKAN IF ELSE PADA ORACLE
    SELECT ename, CASE WHEN sal = 1000 THEN 'Minimum wage'
                       WHEN sal > 1000 THEN 'Over paid'
                       ELSE 'Under paid'
                  END AS "Salary Status"
    FROM   emp;

No comments:

Post a Comment