Timestamp ile sysdate arasındaki karşılaştığm en önemli fark birisinin
makinanın saatini alması diğerinin ise timezone'a göre zamanı vermesidir.
Uygulama ekipleri bazı date alanlarını timestamp tanımlayıp ona göre doldurabilirler.
Bir süre sonra database'in ya da session'ının timezone'u değiştiğinde
columlardaki date değeri sysdate'den farklı olacağı için size gelip database
zamanı yanlış gösteriyor diyebilirler.
Database
zamanı yanlış diye geldikleri zaman ilk kontrol edilmesi gerekenler:
1.
OS
(Operating System)sistem zamanı. Database zamanı OS'den alır.
Dbname
oracle@hostname:/home/oracle>date
Thu Aug 14 09:23:06 EETDST
2014
2.
Database sysdate
SQL> ALTER SESSION SET
NLS_DATE_FORMAT = 'YYYY MM DD HH24:MI:SS';
Session altered.
SQL> select sysdate from
dual;
SYSDATE
-------------------
2014 08 14 09:27:21
SQL> select
to_char(sysdate,'YYYY MM DD HH24:MI:SS') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2014 08 14 09:28:06
3.
Database timezone kontrol edilir.
SELECT sessiontimezone FROM DUAL;
select dbtimezone from dual;
4.
Database timestamp değeri kontrol
edilir.
SQL> SELECT
CURRENT_TIMESTAMP FROM DUAL;
CURRENT_TIMESTAMP
---------------------------------------------------------------------------
14-AUG-14 09.29.28.339601 AM
+03:00
Timestamp column create etme ve
değer yükleme
create table timezone_test1 (timezone TIMESTAMP(6) WITH TIME ZONE , v_date date , id number)
insert into timezone_test1 values (sysdate,sysdate,1);
commit
insert into timezone_test1 values (CURRENT_TIMESTAMP,sysdate,3);
commit
select * from timezone_test1
Hiç yorum yok:
Yorum Gönder