DATE

Ushbu o'quv qo'llanma PostgreSQL DATE ma'lumotlar turini muhokama qiladi va sana qiymatlarini boshqarish uchun ba'zi qulay sana funktsiyalaridan qanday foydalanishni ko'rsatadi.

PostgreSQL sana ma'lumotlarini saqlash imkonini beruvchi DATE turini taklif etadi.

PostgreSQL sana qiymatini saqlash uchun 4 baytdan foydalanadi. DATE maʼlumotlar turining eng past va eng yuqori qiymatlari miloddan avvalgi 4713 va 5874897 milodiy.

Agar siz DATE ustuniga ega jadval yaratsangiz va PostgreSQL serverining joriy sanasidan standart qiymat sifatida foydalanmoqchi bo'lsangiz, DEFAULT kalit so'zidan keyin CURRENT_DATE ko'rsatkichidan foydalanishingiz mumkin.

Misol uchun, quyidagi bayonot DATE ma'lumotlar turi bilan posting_date ustuniga ega bo'lgan documents jadvalini yaratadi.

CREATE TABLE documents (
  document_id serial PRIMARY KEY, 
  header_text VARCHAR (255) NOT NULL, 
  posting_date DATE NOT NULL DEFAULT CURRENT_DATE
);

posting_date ustuni joriy sanani standart qiymat sifatida qabul qiladi. Bu shuni anglatadiki, agar siz yangi qator kiritishda qiymat ko'rsatmasangiz, PostgreSQL joriy sanani posting_date ustuniga kiritadi. Masalan:

INSERT INTO documents (header_text) 
VALUES ('Billing to customer XYZ')
RETURNING *;
document_id |       header_text       | posting_date
-------------+-------------------------+--------------
           1 | Billing to customer XYZ | 2024-02-01
(1 row)

E'tibor bering, ma'lumotlar bazasi serveringizning joriy sanasiga qarab siz boshqa e'lon qilingan sana qiymatini olishingiz mumkin.

PostgreSQL DATE funktsiyalari

Namoyish uchun biz employee_id, first_name, last_name, birth_date va hire_date ustunlaridan iborat yangi employees jadvalini yaratamiz, bu erda birth_date va hire_date ustunlarining ma'lumotlar turlari DATE bo'ladi.

Chiqish:

1. Hozirgi sana

Joriy sana va vaqtni olish uchun siz o'rnatilgan NOW() funksiyasidan foydalanasiz:

Chiqish:

Faqat sana qismini (vaqt qismisiz) olish uchun siz DATETIME qiymatini DATE qiymatiga uzatish uchun cast operatoridan (::) foydalanasiz:

Chiqish:

Joriy sanani olishning tezkor usuli CURRENT_DATE funksiyasidan foydalanishdir:

Chiqish:

Natija yyyy-mm-dd formatida bo'ladi. Biroq, TO_CHAR() funksiyasidan foydalanib sana qiymatini formatlash orqali boshqa formatdan foydalanishingiz mumkin.

2. Muayyan formatda PostgreSQL sana qiymatini chiqaring

Muayyan formatda sana qiymatini chiqarish uchun siz TO_CHAR() funksiyasidan foydalanasiz.

TO_CHAR() funksiyasi ikkita parametrni qabul qiladi. Birinchi parametr formatlashni xohlagan qiymat, ikkinchisi esa chiqish formatini belgilaydigan shablondir.

Masalan, joriy sanani dd/mm/yyyy formatida ko'rsatish uchun siz quyidagi bayonotdan foydalanasiz:

Sanani Feb 01, 2024 kabi formatda ko'rsatish uchun siz quyidagi bayonotdan foydalanasiz:

3. Ikki sana orasidagi intervalni oling

Ikki sana orasidagi intervalni olish uchun siz minus (-) operatoridan foydalanasiz.

Quyidagi misolda bugungi kundan boshlab hire_date ustunidagi qiymatlarni ayirish orqali xodimlarning xizmat kunlari olinadi:

4. Yoshlarni yillar, oylar va kunlarda hisoblang

Joriy sanadagi yoshni yillar, oylar va kunlarda hisoblash uchun AGE() funksiyasidan foydalanasiz.

Quyidagi bayonot employees jadvalidagi xodimlarning yoshini hisoblash uchun AGE() funksiyasidan foydalanadi.

Chiqish:

Agar siz AGE() funksiyasiga sana qiymatini o'tkazsangiz, u ushbu sana qiymatini joriy sanadan olib tashlaydi.

Agar siz AGE() funksiyasiga ikkita argumentni uzatsangiz, u birinchi argumentdan ikkinchi argumentni olib tashlaydi.

Masalan, 01/01/2015 yildagi xodimlarning yoshini olish uchun siz quyidagi bayonotdan foydalanasiz:

Chiqish:

5. Sana qiymatidan yil, chorak, oy, hafta va kunni ajratib oling

Sana qiymatidan yil, chorak, oy, hafta va kunni olish uchun siz EXTRACT() funksiyasidan foydalanasiz.

Quyidagi bayonotda xodimlarning tug'ilgan sanasidan yil, oy va kun ko'rsatilgan:

Chiqish:

Ushbu qo'llanmada siz PostgreSQL DATE ma'lumotlar turi va sana ma'lumotlarini qayta ishlash uchun ba'zi qulay funktsiyalar haqida bilib oldingiz.

© postgresqltutorial.com

Last updated

Was this helpful?