21 Mart 2018 Çarşamba

Oracle Date ve Time Metodları

Giriş
Çoğu metod Type 13 döndürür. Açıklaması şöyle.
Type 12 - Dates stored in table
Type 13 - Date returned by internal date functions like SYSDATE/CURRENT_DATE, also when converting a string literal into date using TO_DATE or ANSI Date literal DATE 'YYYY-MM-DD'
add_months metodu
Örnek
60 aydan eski kayıtları bulmak için şöyle yaparız.
where the_date_column <= add_months (sysdate, -60);
Örnek
6 aydır giriş yapmamış kullanıcıları bulmak için şöyle yaparız.
SELECT   user_id
FROM     DAILYBOOKINGREPORT2
GROUP BY user_id
HAVING   MAX( TRANSACTION_DATE ) < ADD_MONTHS( SYSDATE, -6 );
date literal
Bu metod literal ile çalıştığı için to_date() metodundan daha kolay.
Örnek
Şöyle yaparız.
SELECT * FROM file_core
WHERE datecreated BETWEEN DATE '2017-01-01' AND DATE '2018-01-01';
Örnek
Şöyle yaparız.
where task_start_date > date '2018-03-30'
interval metodu
Şöyle yaparız.
where the_date_column <= sysdate - interval '30' day
Daha kısa olarak şöyle yaparız.
where the_date_column <= sysdate - 30
to_date metodu
TO_DATE metodu yazısına taşıdım.

sysdate metodu
Elimizde DATE tipinden bir sütun olsun. Bu sütüna sistem saatini "yyyy-mm-dd hh:mm:ss" olarak yazmak isteyelim.

Örnek
Şöyle yaparız.
SQL> CREATE TABLE t(col DATE);

Table created.

SQL> INSERT INTO t SELECT SYSDATE FROM dual;

1 row created.

SQL> COMMIT;

Commit complete.
Örnek
Sunucunun saatini yazmak için Java ile şöyle yaparız.
ps = conn.prepareStatement('insert into your_table(date_col, ...) values (sysdate, ...)');
İstemcinin saatini yazmak için Java ile şöyle yaparız.
ps = conn.prepareStatement('insert into your_table (date_col, ...) values (?, ...)');
ps.setTimestamp(1, new java.sql.Timestamp(System.currentTimeMillis()));


Hiç yorum yok:

Yorum Gönder