Bu bölümde işleyişini anlayacağız. PostgreSQL Aralığı veri türü, ve biz de görüyoruz örnekler arasında Aralık veri türü. Ve çoğunlukla kullanılan Aralık işlevler , Örneğin, ŞİMDİ(), TO_CHAR(), EXTRACT(), justify_days(), justify_hours(), justify_interval(). Giriş ve çıkış PostgreSQL aralık değerleri için format.
PostgreSQL Aralık Veri Türü Nedir?
PostgreSQL'de, Aralık Time'ı depolamak ve dağıtmak için kullanılan başka bir veri türüdür yıllar, aylar, günler, saatler, dakikalar, saniyeler, vb. Ve aylar ve günler değerler tamsayı değerleri , oysa ikinci alan olabilir kesir değerleri.
PostgreSQL aralık veri türü değeri şunları içerir: 16 bayt depolama kabul edilebilir aralıkta bir sürenin saklanmasına yardımcı olan boyut - 178000000 yıldan 178000000'e yıllar.
dizilist.sort
Not: İkinci alanda alınan kesir basamaklarının sayısı kesinlik p olarak bilinir.
PostgreSQL Aralık veri türünün sözdizimi
PostgreSQL Interval veri tipinin sözdizimi aşağıdaki gibidir:
@ interval [ fields ] [ (p) ]
Yukarıdaki sözdiziminde aşağıdaki parametrelere sahibiz:
Parametre | Tanım |
---|---|
alanlar | Field parametresi Saati göstermek için kullanılır. |
P | P kesinlik değerini görüntülemek için kullanılır. |
@ | @ parametresi isteğe bağlı bir parametre olduğu için göz ardı edebiliriz. |
Interval değerlerini nasıl yazabileceğimizi daha iyi anlamamız için örnek bir örnek görelim. ile @ parametresi ve @ parametresi olmadan :
@interval '6 months before'; @interval '2 hours 30 minutes';
VEYA
interval '6 months before'; interval '2 hours 30 minutes';
Not: Yukarıdaki ifadelerin her ikisini de birbirine karşılık geldiği için kullanabiliriz. Ayrıca, bir aralık değeri, izin verilen aralığın 0'dan 6'ya kadar başlatıldığı bir p seçmeli kesinlik değerine sahip olabilir.
PostgreSQL Aralık veri türü örneği
Nasıl yapıldığını anlamak için bir örnek örnek görelim. PostgreSQL Aralık veri türü İşler.
Aşağıdaki örnekte zamanı bulmaya çalışacağız. 2 saat 30 dakika önce, en geçen yılın şu anki zamanı ; aşağıdaki komutları kullanacağız:
SELECT now(), now() - INTERVAL '6 months 2 hours 30 minutes' AS '2 hours 30 minutes before last year';
Çıktı
Yukarıdaki komutu çalıştırdıktan sonra aşağıdaki çıktıyı elde edeceğiz; Geçen yıldan 2 saat 30 dakika önce :
Aralık veri türünün birincil örneğini gördük ve çalışmasını anladık. Şimdi Giriş ve çıkış formatını göreceğiz. aralık değerleri.
Öncelikle şunu anlayacağız Giriş formatı için PostgreSQL aralık değeri :
PostgreSQL Aralık Giriş Formatı
PostgreSQL'de aşağıdakilere sahibiz ayrıntılı sözdizimi, bu aralık değerlerini yazmamıza yardımcı olur:
quantity unit [quantity unit...] [direction]
Yukarıdaki sözdiziminde kullanılan aşağıdaki parametrelere sahibiz:
Parametre | Tanım |
---|---|
miktar | A miktar gibi işaretleri de kabul eden bir sayıdır + veya - |
birim | birim herhangi biri olabilir milenyum, yüzyıl, on yıl, yıl, ay, hafta, gün, saat, dakika, saniye, milisaniye, mikrosaniye, veya kısaltma şu şekilde olabilir y, m, d, vb. ve çoğul formlar şunlar olabilir: aylar, günler , vesaire. |
yön | yön parametre olabilir önce veya boş dize. |
Not: Yukarıdaki sözdizimi aynı zamanda aralık çıktı formatı için de kullanılır ve postgres_verbose olarak bilinir.
Aşağıdaki örnekte, kullandığımız bazı aralık değerlerini görüntüleyeceğiz. ayrıntılı sözdizimi :
INTERVAL '1 year 5 months 5 days'; INTERVAL '1 weeks ago';
ISO 8601 Aralık Formatı
Yukarıdaki ayrıntılı sözdiziminin yanı sıra, aralık değerlerini aşağıdakilerin yardımıyla yazmak ISO 8601-zaman PostgreSQL bize aşağıdaki iki yolu sunar:
ISO 8601 için tanımlayıcıların formatı aşağıdaki gibidir:
P quantity unit [ quantity unit ...] [ T [ quantity unit ...]]
Yukarıdaki formatta, esas aralık değeri şu şekilde başlar: P harfi , ve T harfi tanımlamak için kullanılır günün saati birimi .
Aşağıdaki tablo şunları göstermektedir: ISO 8601 aralığı birim kısaltmaları:
Kısaltma | Tanım |
---|---|
VE | Yıllar |
M | Aylar (tarih kısmı için) |
İÇİNDE | Haftalar |
D | Günler |
H | Saat |
M | Dakika (zaman kısmı için) |
S | Saniye |
Not: M, T harfinden önce veya sonra görünmesine bağlı olarak aylar veya dakikalar olabilir.
Bir örnek görelim ISO 8601 tanımlayıcıları Daha iyi anlamamız için format:
ISO 8601 tanımlayıcı formatı aralığı için yazılabilir. 5 yıl 4 ay 3 gün 2 saat 1 dakika 1 saniye :
P5Y4M3DT2H1M1S
Ve alternatif biçimi ISO8601 aşağıda gösterildiği gibidir:
P [ years-months-days ] [ T hours:minutes:seconds ]
Ve aynı zamanda şununla başlar: P harfi ve T harfi, hangi böler saat ve tarih aralık değerinin parçaları.
Örneğin, ISO 8601 alternatif formu için yazılabilir 5 yıl 4 ay 3 gün 2 saat 1 dakika 1 saniye, Aşağıda gösterildiği gibi:
P0005-04-03T02:01:01
PostgreSQL Aralık Çıkış Formatı
Aralık değerlerinin PostgreSQL aralık çıktı formatı aşağıdakilerin yardımıyla ayarlanabilir: AYARLAMAK aralık stili Aşağıdaki örnekte görebileceğimiz gibi komut:
SET intervalstyle = 'iso_8601';
PostgreSQL dört farklı çıktı formatı içerir:
Not: Aralık değerlerini biçimlendirmek için PostgreSQL varsayılan olarak Postgres stilini kullanır.
Daha iyi anladığımızı gösteren bir örnek görelim:
Aşağıdaki komut görüntülemek için kullanılır. 5 yıl 4 ay 3 gün 2 saat 1 dakika 1 saniye dört farklı çıktı formatında:
ISO_8601 Çıktı Formatı için
Aşağıdaki komutta, AYARLAMAK the aralık stili gibi iso_8601 yukarıda belirtilen aralık değeri için:
SET intervalstyle = 'iso_8601'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minute 1 second';
Çıktı
Yukarıdaki komutu çalıştırdıktan sonra aşağıdaki sonucu elde edeceğiz. iso_8601 aralıklı çıktı formatı:
Postgres_verbose çıktı formatı için
Aşağıdaki komutta, AYARLAMAK the aralık stili gibi postgres_verbose yukarıda belirtilen aralık değeri için:
SET intervalstyle = 'postgres_verbose'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
Çıktı
Yukarıdaki komutu uyguladıktan sonra aşağıdaki sonucu elde edeceğiz. postgres_verbose aralıklı çıktı formatı:
css'de resmi ortala
Postgres çıktı formatı için
Aşağıdaki komutta, AYARLAMAK the aralık stili gibi Postgres yukarıda belirtilen aralık değeri için:
SET intervalstyle = 'postgres'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
Çıktı
Yukarıdaki komutu başarıyla çalıştırdıktan sonra aşağıdaki sonucu elde edeceğiz. Postgres aralıklı çıktı formatı:
Sql_standard Çıkış Formatı için
Aşağıdaki komutta, AYARLAMAK the aralık stili gibi sql_standardı yukarıda belirtilen aralık değeri için:
SET intervalstyle = 'sql_standard'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
Çıktı
Yukarıdaki komutu başarıyla çalıştırdıktan sonra aşağıdaki sonucu elde edeceğiz. sql_standardı aralıklı çıktı formatı:
PostgreSQL aralığını dize olarak değiştirme
Şunu kullanabiliriz: TO_CHAR() Bir aralık değerini bir dizeye değiştirme işlevi.
PostgreSQL aralığını dize olarak değiştirmek için sözdizimi
TO_CHAR(interval,format)
TO_CHAR() işlevi alır ilk ifade gibi bir aralık değeri ve bir tane daha biçim ve aralığı belirli bir formatta görüntüleyen bir dize alır.
Aşağıdaki örnekte PostgreSQL aralığını dize değerine dönüştüren TO_CHAR() işlevini kullanacağız:
SELECT TO_CHAR( INTERVAL '15h 15m 15s','HH24:MI:SS' );
Çıktı
Yukarıdaki komutu başarıyla çalıştırdıktan sonra aşağıdaki sonucu elde edeceğiz:
PostgreSQL Aralığıyla İlgili Operatörler ve İşlevler
Aralık operatörleri
Aşağıdakileri kullanabiliriz +, -, * vb. aritmetik operatör Aralık değerlerini almak için.
Daha iyi anlamamız için aşağıdaki örneği inceleyelim:
Aşağıdaki komutta kullanacağımız aritmetik operatörü (+) PostgreSQL aralık veri tipinin yardımıyla:
SELECT INTERVAL '1h 50m' + INTERVAL '5m';
Çıktı
Yukarıdaki komutu aşağıda gösterildiği gibi uyguladığımızda aşağıdaki sonucu elde edeceğiz:
Aşağıdaki komutta kullanacağımız aritmetik operatörü (-) PostgreSQL aralık veri tipinin yardımıyla:
SELECT INTERVAL '3h 50m' - INTERVAL '30m';
Çıktı
Yukarıdaki komutu uyguladığımızda aşağıdaki sonucu elde edeceğiz:
Aşağıdaki komutta kullanacağımız aritmetik operatörü (*) PostgreSQL aralık veri tipinin yardımıyla:
SELECT 400 * INTERVAL '5 minute';
Çıktı
Yukarıdaki komutu uyguladığımızda aşağıdaki sonucu elde edeceğiz:
PostgreSQL aralığından veri çıkarma
Şunu kullanabiliriz: ÇIKARMAK() alanları bir aralık değerinden çıkarma işlevi, Örneğin, yıl, ay, tarih vb. .
PostgreSQL aralığından veri çıkarmak için sözdizimi
ekleme pitonu
EXTRACT(field FROM interval)
Yukarıdaki sözdiziminde şunu kullanabiliriz: yıl, ay, tarih, saat, dakika , vb., alan parametresinde.
çıkarmak Aralıktan çıkarmak istersek, işlev çift duyarlıklı türde bir değer döndürür.
Aşağıdaki örnekte kullanacağımız ÇIKARMAK() Çift duyarlıklı değeri alma işlevi.
SELECT EXTRACT (MINUTE FROM INTERVAL '2 hours 30 minutes' );
Çıktı
Yukarıdaki komutu başarıyla çalıştırdıktan sonra aşağıdaki çıktıyı alacağız; çift duyarlıklı tarih bölümü değerler aşağıda gösterildiği gibidir:
PostgreSQL aralık değerlerini ayarlama
İki fonksiyonumuz var, justify_days ve justify_hours PostgreSQL'de değişiklik yapmamıza izin veriyor 24 saatlik aralık olarak düşünmek Bir gün ve aralığı 30 gün olarak düşünmek bir ay .
PostgreSQL aralık değerlerini nasıl ayarladığımızı anlamak için bir örnek görelim:
Aşağıdaki komutta kullanacağımız justify_days ve justify_hours işlevi:
SELECT justify_days(INTERVAL '30 days'), justify_hours(INTERVAL '24 hours');
Çıktı
Yukarıdaki komutu çalıştırdıktan sonra, aralığını gösteren aşağıdaki sonucu elde edeceğiz. Bir ay gibi 30 gün ve 24 saat aralığı bir gün gibi :
Bunun yanı sıra, justify_interval fonksiyonu yardımıyla aralık değerlerini düzenler. justify_days ve justify_hours eklenen işaret değişiklikleriyle:
Aşağıdaki örnekte justify_interval fonksiyonunu SELECT komutuyla kullanacağız:
SELECT justify_interval(interval '6 months -1 hour');
Çıktı
Yukarıdaki komutu uyguladıktan sonra aşağıdaki çıktıyı alacağız:
Genel Bakış
İçinde PostgreSQL Aralık veri türü bölümünde aşağıdaki konuları öğrendik:
- PostgreSQL Aralık verileri tür, bir dönemi depolamak ve dağıtmak için kullanılır yıllar, aylar, günler, saatler, dakikalar, saniyeler.
- Farklı kullandık Aralık fonksiyonları , Örneğin, ŞİMDİ(), TO_CHAR(), Belirli bir tablodaki aralık değerlerini geliştirmek için.
- PostgreSQL aralık değerlerinin her ikisi de vardır giriş ve çıkış aralık biçimi.
- PostgreSQL aralık değerlerini aşağıdaki yardımıyla ayarlayabiliriz. justify_days(), justify_hours, justify_interval() işlevleri.
- Şunu kullanabiliriz: ÇIKARMAK() aralık alanı değerlerini çıkarma işlevi.