Diğer dersleri http://selimkaratas.com.tr/oracle-11g-r2-egitimi-ders-notlari adresinden bulabilirsiniz.

ALTER SESSION sadece bizim çalıştığımız session’da değişim yapar.
ALTER SYSTEM tamamen sistemi değiştir demektir.
ALTER SESSION SET TIME_ZONE = '-3:00'; -- 3 saat geriye alır.
SELECT SESSIONTIMEZONE, LOCALTIMESTAMP FROM DUAL; --bağlı bulunduğumuz lokaldeki zamanı ayarlar.
ALTER SESSION SET TIME_ZONE = dbtimezone; --database'in bulunduğu zamanı yerin zamanına göre ayarlar.
ALTER SESSION SET TIME_ZONE = 'America/New_York'; -- America NY'ye göre zamanı ayarlar
• CURRENT_DATE:
— Aynı SYSDATE gibi gün-ay-yıl detayını gösterir.
• CURRENT_TIMESTAMP:
–En Detaylı tarih gösterimi
• LOCALTIMESTAMP:
— Lokal olmayı kabul ettiğimiz için (fonksiyon kullanarak )zaman diliminin görülmesini söz konusu değildir.
Bunlar tarih detayı gösterebilme detayına sahip olan fonksiyonlardır.
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS'; --default format DD-MON-RR'dir ama biz alter session ile yukarıdaki hale getiririz.
ALTER SESSION SET TIME_ZONE = '-3:00'; --3 saat geriye alıyoruz
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;

SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM DUAL;

SELECT SESSIONTIMEZONE, LOCALTIMESTAMP FROM DUAL;

insert into emp_history values (210, sysdate, 5000); alter table emp_history modify hiredate timestamp; select * from emp_history; --hire date kolununun tarih dipini timesamp yaptık.

00:00 olmasının nedeni değişiklik zamanını bilememesidir. Insert ettiğimiz tablonun detayını ise aşağıdaki gibi gösterecektir.
![]()
INTERVAL YEAR TO MONTH
CREATE TABLE warranty (prod_id number, warranty_time INTERVAL YEAR(3) TO MONTH);
INSERT INTO warranty VALUES (678, '200-11');

INTERVAL DAY TO SECOND
CREATE TABLE lab ( exp_id number, test_time INTERVAL DAY(2) TO SECOND);
INSERT INTO lab VALUES (100012, '90 00:00:00');

Tarih Alanları ile ilgili Fonksiyonlar
– EXTRACT
– TZ_OFFSET
– FROM_TZ
– TO_TIMESTAMP
– TO_YMINTERVAL
– TO_DSINTERVAL
SELECT EXTRACT (YEAR FROM SYSDATE) FROM DUAL; -- bulunduğumuz tarihin yıl detayını getirir.

TZ_OFFSET — çok kullanılmaz
SELECT
TZ_OFFSET('Europe/Istanbul'),
TZ_OFFSET('Europe/Paris')
FROM DUAL;
-- Greenwich'e göre bölgelerin bulunduğu zaman dilimi

SELECT * FROM V$TIMEZONE_NAMES; -- bölgelerin isimleri

FROM_TZ — çok kullanılmaz
SELECT FROM_TZ(TIMESTAMP '2000-07-12 08:00:00', 'Australia/North') FROM DUAL;
TO_TIMESTAMP
SELECT TO_TIMESTAMP ('2014-02-27 07:27:30',
'YYYY-MM-DD HH:MI:SS')
FROM DUAL;
![]()
TO_YMINTERVAL
SELECT hire_date,
hire_date + TO_YMINTERVAL('02-03')
FROM employees
WHERE department_id = 20;
--hire_date alanına 2 yıl 3 ay ekle.

TO_DSINTERVAL
SELECT last_name,
TO_CHAR(hire_date, 'mm-dd-yy:hh:mi:ss') hire_date,
TO_CHAR(hire_date +
TO_DSINTERVAL('75 7:00:00'),
'mm-dd-yy:hh:mi:ss') hiredate2
FROM employees;-- hire_date alanına 75 gün 7 saat ekle.
