Oracle PL/SQL/PL SQL/DATE Compare

Материал из SQL эксперт
Перейти к: навигация, поиск

Compare date type variable in PL/SQL block

 
SQL> -- create demo table
SQL> create table emp(
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,
  3    fname         VARCHAR2(10 BYTE),
  4    lname          VARCHAR2(10 BYTE),
  5    Start_Date         DATE,
  6    End_Date           DATE,
  7    Salary             Number(8,2),
  8    City               VARCHAR2(10 BYTE),
  9    Description        VARCHAR2(15 BYTE)
 10  )
 11  /
Table created.
SQL>
SQL>
SQL>
SQL> -- prepare data
SQL> insert into emp(ID,  fname, lname, Start_Date,                     End_Date
,                       Salary,  City,       Description)
  2               values ("01","Jason",    "Martin",  to_date("19960725","YYYYMM
DD"), to_date("20060725","YYYYMMDD"), 1234.56, "Toronto",  "Programmer")
  3  /
1 row created.
SQL> insert into emp(ID,  fname, lname, Start_Date,                     End_Date
,                       Salary,  City,       Description)
  2                values("02","Alison",   "Mathews", to_date("19760321","YYYYMM
DD"), to_date("19860221","YYYYMMDD"), 6661.78, "Vancouver","Tester")
  3  /
1 row created.
SQL>
SQL>
SQL> declare
  2    dateValue date;
  3    s Number(8,2);
  4    begin
  5         select start_date into dateValue from emp where rownum = 1;
  6         select salary into s from emp where rownum = 1;
  7
  8          IF dateValue > "11-APR-63" then
  9              s :=  s * 1.15;
 10          END IF;
 11
 12
 13       dbms_output.put_line(s);
 14  end;
 15  /
1419.74
PL/SQL procedure successfully completed.
SQL>
SQL> drop table emp;
Table dropped.
SQL>



Date comparison example

 
SQL> -- Date comparison example.
SQL> SET SERVEROUTPUT ON
SQL>
SQL> DECLARE
  2     payment_due_date  DATE;
  3  BEGIN
  4     payment_due_date := TO_DATE("1-Jun-1997","dd-mon-yyyy");
  5
  6     DBMS_OUTPUT.PUT_LINE("Today is " || TO_CHAR(SYSDATE,"dd-Mon-yyyy"));
  7     DBMS_OUTPUT.PUT_LINE("Payment is due on " || TO_CHAR(payment_due_date,"dd-Mon-yyyy"));
  8
  9     IF payment_due_date = SYSDATE THEN
 10       DBMS_OUTPUT.PUT_LINE("Payment is due today.");
 11     ELSE
 12       DBMS_OUTPUT.PUT_LINE("Payment can wait a while.");
 13     END IF;
 14
 15     IF TRUNC(payment_due_date) = TRUNC(SYSDATE) THEN
 16       DBMS_OUTPUT.PUT_LINE("Wrong! Payment is due today!");
 17     ELSE
 18       DBMS_OUTPUT.PUT_LINE("Wrong! Payment can wait a while.");
 19     END IF;
 20  END;
 21  /
Today is 31-Aug-2006
Payment is due on 01-Jun-1997
Payment can wait a while.
Wrong! Payment can wait a while.
PL/SQL procedure successfully completed.
SQL>
SQL>