PostgreSQL Tarih Saat İşlemleri ve Fonksiyonları
PostgreSQL üzerinde tarih formatı, tarih aralığı, iki tarih arasındaki fark gibi tarih saat işlemlerinde kullanılan operatörler, fonksiyonlar ve anahtar kelime örnekleri yer alıyor.
Tarih Saat işlemleri ve fonksiyonları
PostgreSQL tarih ve saat bilgilerini almak ve işlem yapmak için çeşitli anahtar kelime ve fonksiyonlara sahiptir.
CURRENT_DATE
Kullanıcıya ait sistemin tarih bilgisini verir.
SELECT CURRENT_DATE;
CURRENT_TIME
Kullanıcıya ait sistemin saat bilgisini UTC olarak verir.
SELECT CURRENT_TIME;
LOCALTIME
Kullanıcıya ait sistemin saat bilgisini verir.
SELECT LOCALTIME;
CURRENT_TIMESTAMP
Kullanıcıya ait sistemin tarih-saat UTC olarak bilgisini verir.
SELECT CURRENT_TIMESTAMP, now(), transaction_timestamp();
NOT: Anahtar kelime yerine benzer sonucu veren now() veya transaction_timestamp() fonksiyonları kullanılabilir.
LOCALTIMESTAMP
Kullanıcıya ait sistemin tarih-saat bilgisini verir.
SELECT LOCALTIMESTAMP;
clock_timestamp
Fonksiyon sorgunun çalıştırıldığı andaki tarih-saat bilgisini verir.
SELECT CURRENT_TIMESTAMP, pg_sleep(1), clock_timestamp(), pg_sleep(1), CURRENT_TIMESTAMP;
statement_timestamp
Fonksiyon sorgu ifadesinin çalıştırıldığı andaki tarih-saat bilgisini verir.
SELECT CURRENT_TIMESTAMP, pg_sleep(1), statement_timestamp(), pg_sleep(1), CURRENT_TIMESTAMP;
NOT: Uzun SQL komutlarındaki her SQL ifadesine göre tarih-saat bilgisinin gerektiği günlük-log işlemlerinde sıklıkla kullanılır.
date_part
Tarih ve saat bilgisinden istenilen bilgiyi(yıl, ay, gün, saat, dakika, saniye vb.) almak için kullanılır.
Genel kullanımı aşağıdaki gibidir.
date_part('bilgi', tarih_saat);
Fonksiyonun ilk parametresinde aşağıdaki değerler kullanılabilir.
- century
- decade
- year
- month
- day
- hour
- minute
- second
- microseconds
- milliseconds
- dow
- doy
- epoch
- isodow
- isoyear
- timezone
- timezone_hour
- timezone_minute
SELECT date_part('second', CURRENT_TIMESTAMP) as saniye,
date_part('month', CURRENT_TIMESTAMP) as ay,
date_part('week', CURRENT_TIMESTAMP) as hafta;
Zaman değeri olarak metinsel ifadeler de kullanılabilir.
SELECT date_part('month', '2024-07-06'::DATE),
date_part('hour', '2024-07-06 15:30:00'::TIMESTAMP),
date_part('day', TIMESTAMP '2024-07-06');
extract
Bir önceki date_part fonksiyonuna benzer şekilde Tarih ve saat bilgisinden istenilen bilgiyi(yıl, ay, gün, saat, dakika, saniye vb.) almak için kullanılır.
Genel kullanımı aşağıdaki gibidir.
extract( bilgi FROM zaman_değeri);
SELECT extract('second' FROM CURRENT_TIMESTAMP) as saniye,
extract('month' FROM CURRENT_TIMESTAMP) as ay,
extract('week' FROM CURRENT_TIMESTAMP) as hafta;
Zaman değeri olarak metinsel ifadeler de kullanılabilir.
SELECT extract('month' FROM '2024-07-06'::DATE),
extract('hour' FROM '2024-07-06 15:30:00'::TIMESTAMP),
extract('day' FROM TIMESTAMP '2024-07-06');
to_date
Metinsel ifadeyi tarih formatına çevirir.
Genel kullanımı aşağıdaki gibidir.
to_date(metin, format);
SELECT to_date('20020408','YYYYMMDD'),
to_date('10 May 2007', 'DD Mon YYYY'),
to_date('2017 Apr 20','YYYY Mon DD');
to_timestamp
Metinsel ifadeyi tarih-saat formatına çevirir.
Genel kullanımı aşağıdaki gibidir.
to_date(metin, format);
SELECT to_timestamp('2012-09-21 10:30:20', 'YYYY-MM-DD HH:MI:SS'),
to_timestamp('2015 Aug','YYYY MON'),
to_timestamp('12 31 99 12:45', 'MM DD YY HH:MI');
make_date
Fonksiyona verilen değerlere göre tarih formatı oluşturur.
make_date(yıl, ay, gün);
SELECT make_date(2004, 12, 01);
make_time
Fonksiyona verilen değerlere göre saat formatı oluşturur.
make_time(saat, dakika, dakika);
SELECT make_time(22, 30, 45);
age
Fonksiyona verilen değerlere göre postgresql iki tarih arasındaki fark bulmak için kullanılır.
age(tarih1, tarih2);
select age(current_timestamp, '07-06-1963'), age('01-05-2023', '04-08-1963');
AT TIME ZONE
Operatör verilen tarih saat dilimine göre tarih-saat formatını verir.
tarih_saat AT TIME ZONE hedef_saat_dilimi
SELECT CURRENT_TIMESTAMP AT TIME ZONE 'America/New_York';
NOT: PostgreSQL tarih saat dilimi olarak IANA kullanır.
date_trunc
Tarih saat bilgisini girilen bilgi değerinden itibaren sıfırlar.
date_trunc(bilgi, tarih_saat)
SELECT date_trunc('century', current_timestamp), date_trunc('hour', current_timestamp);
timeofday
Tarih saat bilgisini metinsel ifade olarak verir.
SELECT timeofday();
pg_sleep
Parametre olarak verilen değere göre saniye cinsinden komutların işlemesini beklemeye alır.
SELECT pg_sleep(5);
PostgreSQL Derslerine buradan ulaşabilirsiniz.
Hayırlı günler dilerim.