PostgreSQL Geçici Veri Türleri Nelerdir?

Selamlar. Bu yazıda PostgreSQL Geçici Veri Türleri hakkında bilgilendirmeler yapacağım. Bir önceki yazı sayısal türler hakkındaydı. Bu yazıyla serimizi devam ettirelim.

PostgreSQL Geçici Veri Türleri

PostgreSQL Geçici Veri Türleri Nelerdir?

Öncelikle geçici türler ya da diğer bilinen adıyla temporal tipler tarih ve zamanı aynı anda saklayabildiği gibi tek tek saklamanıza da izin verirler. Diğer veri tabanı yönetim sistemlerinden de bildiğiniz gibi date, datetime, time gibi alanlar burada da yer almaktadır. Bu alanlar şunlardır:

  • DATE
  • TIME
  • DATETIME
  • TIMESTAMP
  • TIMESTAMPZ
  • INTERVAL

Yukarıdaki türler PostgreSQL tarafından sunulan ana geçici türler. İngilizce bir şeyi Türkçe diline çevirmenin garipliğiyle geçici türler diyorum umarım doğru bir karşılıktır. Bu türleri çoğumuz kullanmışızdır. En azından date, datetime ya da sade time türlerine yabancı değiliz. Ancak benim gibi yeni yetmeler bilerek kullanmıyor gibiler. Neyse başlayalım:

Date Veri Türü

Bu veri türü sadece ve sadece tarihsel değerleri saklar. Ben saatlerle çok da ilgilenmiyorum tarih bana yeter düşüncesindeyseniz bu türü kullanabilirsiniz. Bu türün formatı varsayılan olarak yyyy-mm-dd türündendir. Aslında varsayılan diyerek sanki insert işlemlerinin değiştirilebilir olduğunu düşünüyor olabilirsiniz fakat yaptığı şey size sağladığı çıktıdır. Yine pek de yabancı olmadığınız bugünün tarihini CURRENT_DATE sabiti ile alabiliyorsunuz. Basit bir tablo oluşturalım.

create table tarih(
    id serial,
    baslik varchar(100),
    tarih date default current_date
);

Eğer ki insert ifadesi açık bir şekilde tarih alanını da kapsamıyorsa varsayılan tarih bugün olarak atanır.

Günün Tarihini Alma

Bugünün tarihini almak gibi bir niyetiniz varsa iki temel yöntem size selam veriyor. Birincisi yukarıda gördüğümüz CURRENT_DATE sabiti iken bir diğeri de gömülü NOW() fonksiyonudur. Kullanımları şöyledir:

select current_date;

select now()::date;

Tarihsel Değerlerin Formatlanması

Bir diğer önemli konu ise tarihsel değerlerin çıktılarını istediğiniz türde almakla ilgili. Varsayılan çıktı dışında formatları şöyle yapabilirsiniz. Örneğin az önce oluşturduğunuz tabloya bir satır ekleyin ve bunu gelin şöyle formatlayalım:

select to_char(tarih, 'mm/dd/yyyy') from tarih;

İki Tarih Arası Fark

İki tarih arası farkı almak ise olabilecek en basit haliyle temel anlamda tüm dbslerde yer alan cinsten. Bu örnekte kendi doğum tarihimi ve bugünü verdim.

select now() - '1993-10-15';

Garipmiş 0 years 0 mons 8799 days 22 hours 31 mins 0.394372 secs gibi bir yaşam süresine sahibim.

Yaş Değerlerini Hesaplamak

Evet yukarıdaki gün değerini ciddi manada bir yaş fonksiyonu ile yani AGE fonksiyonu ile yapabiliyoruz. Örnek bir data ekledim ve sonrasında bu datayı çektim:

insert into tarih(baslik, tarih) values('Ben doğdum', '1993-10-15');

select AGE(tarih) from tarih;

Çıktı şöyle oldu:

24 years 1 mons 2 days 0 hours 0 mins 0.00 secs

Eğer age fonksiyonu boş ise bugünün tarihini alır. Daha fazla bilgi için psql resmi sitesine göz atabilirsiniz.

Time Veri Türü

Arkadaşlar eğer saatlerle çalışmak istersek bu veri türünü kullanmamız daha iyi olacaktır. Basit olarak time kolonuna sahip tabloyu şöyle oluştururuz:

create table saat(
    id serial,
    baslik varchar(100),
    zaman time default current_time
);

Date ile aynı sadece değişen keyword oluyor ki date yerini time’a bırakıyor. Bu türde şu an kaç demeniz için CURRENT_TIME sabitini kullanmanız gerekiyor. Basit olarak veriler ekleyip verilermizi çekelim:

insert into saat(baslik) values('Alinin Saati');

insert into saat(baslik, zaman) values('Alinin Spesifik saati', '13:45:12');

select * from saat;

Ayrıca yerel saati almak için LOCALTIME sabitini kullanabiliyorsunuz.

Bu yazıyı çok uzatmadan bu kadarla keseyim zira iki farklı türümüz daha var ve geçiştirilemeyecek kadar uzunlar. Bunları da ekleyip serinin bu emekleme dönemlerini hızlıca geçmek istiyorum.

Okuduğunuz için teşekkürler. Herhangi bir soru var ise yorum bırakabilir ya da iletişimde yer alan mailimden bana ulaşabilirsiniz. Bu yazıda PostgreSQL Geçici Veri Türleri konusunda temel bilgilerin bir kısmını gördük.

İyi çalışmalar dilerim.