Neçə dəfə rast gəlmisən ki, hansısa tətbiq tarix və vaxt ilə işləyir? Online sifarişlər, cədvəllər, bazada dəyişikliklərin tarixi — bunların hamısı düzgün vaxt saxlanmasından asılıdır. PostgreSQL bu cür datalarla işləmək üçün güclü alətlər verir və əlbəttə, vaxt olan cədvəllər qorxulu saatlı tablicalar deyil, hadisələri analiz və sıralamaq üçün dəqiq strukturdur.
Tarix və vaxt üçün tiplər imkan verir:
- Yalnız tarixi
DATE, yalnız vaxtıTIMEvə ya hər ikisini birlikdəTIMESTAMPsaxlamağa. - Gün əlavə etmək, tarixlər arasındakı fərqi hesablamaq və qeydləri vaxt kriteriyasına görə filtrləmək kimi əməliyyatlar aparmağa.
- Zaman zonaları ilə işləməyə (amma bu gələcək leksiyaların mövzusudur).
Data tipləri: DATE, TIME, TIMESTAMP
DATE data tipi
DATE tipi yalnız tarixi saxlamaq üçündür, vaxt olmadan. Burada il, ay və gün yazılır. Bu tip faydalıdır, əgər:
- İstifadəçinin doğum gününü saxlamaq lazımdırsa.
- Hadisənin tarixi vacibdirsə, amma vaxt önəmli deyilsə.
Format nümunəsi: YYYY-MM-DD (il-ay-gün).
Nümunə:
| id | name - VARCHAR(100) | event_date - DATE |
|---|---|---|
| 1 | SQL Workshop | 2025-06-15 |
| 2 | Python | 2025-06-17 |
| 3 | Java Courses | 2025-06-25 |
TIME data tipi
TIME tipi yalnız vaxtı saxlamaq üçündür. Faydalıdır, əgər:
- Məsələn, iş gününün başlanğıcı kimi cədvəl saxlamaq lazımdırsa.
- Vaxt vacibdirsə, amma tarix yoxdursa.
Format nümunəsi: HH:MI:SS (saat:dəqiqə:saniyə).
Nümunə:
| id | task_name - VARCHAR(100) | start_time - TIME |
|---|---|---|
| 1 | Team Meeting | 09:00:00 |
| 2 | Code Review | 11:30:00 |
| 3 | Client Call | 15:00:00 |
TIMESTAMP data tipi
TIMESTAMP — tarix və vaxtın birləşməsidir. Faydalıdır, əgər:
- Məsələn, istifadəçi sistemə daxil olanda həmin anı qeyd etmək lazımdırsa.
- Dəyişiklikləri izləmək üçün vaxt qeydiyyatı (loglama) lazımdırsa.
Format nümunəsi: YYYY-MM-DD HH:MI:SS (il-ay-gün saat:dəqiqə:saniyə).
Nümunə:
| id | action - VARCHAR(100) | login_time - TIMESTAMP |
|---|---|---|
| 1 | User Login | 2023-10-15 14:30:00 |
| 2 | File Uploaded | 2023-10-15 15:10:00 |
| 3 | User Logout | 2023-10-15 16:45:00 |
Tarix və vaxt ilə əməliyyatlar
Artıq hansı tiplərin olduğunu bildiyimizə görə, gəlin baxaq necə işləmək olar. PostgreSQL tarix və vaxt ilə işləmək üçün bir çox daxili funksiyalar verir.
Tarix və vaxt hissələrinin çıxarılması
Səndə TIMESTAMP varsa və yalnız ili, ayı, günü və ya saatı çıxarmaq istəyirsənsə, EXTRACT funksiyasından istifadə et.
Nümunə:
SELECT EXTRACT(YEAR FROM TIMESTAMP '2025-06-15 14:30:00') AS il;
-- Nəticə: 2025
SELECT EXTRACT(MONTH FROM TIMESTAMP '2025-06-15 14:30:00') AS ay;
-- Nəticə: 06
SELECT EXTRACT(DAY FROM TIMESTAMP '2025-06-15 14:30:00') AS gun;
-- Nəticə: 15
Zaman intervallarının əlavə və çıxılması
Bir həftə sonra nə olacaq? Yaxud dünən nə idi? Interval əməliyyatlarından istifadə et.
Nümunə:
-- Cari tarixə 7 gün əlavə etmək
SELECT CURRENT_DATE + INTERVAL '7 days' AS gelecek_hefte;
-- 1 ay çıxmaq
SELECT CURRENT_DATE - INTERVAL '1 month' AS kecen_ay;
Tarixlərin müqayisəsi
Hadisənin artıq baş verdiyini necə bilmək olar? Kodda bug tapmaqdan asandır — sadəcə dəyərləri müqayisə et.
Nümunə:
SELECT event_date
FROM events
WHERE event_date < CURRENT_DATE;
-- Keçmişdə olan bütün hadisələri seçirik
Tarix və vaxt ilə işləmək üçün funksiyalar barədə daha ətraflı növbəti leksiyalarda öyrənəcəksən. Hələlik sadəcə yadında saxla ki, belə tiplər var — bu kifayətdir.
Zaman zonası problemləri və vaxt standartı
Bu leksiyada hələ zaman zonalarına dərindən getməyəcəyik, amma vacibdir ki, PostgreSQL TIMESTAMPTZ tipini dəstəkləyir (zaman zonası ilə vaxt qeydiyyatı). Məsələn, 2023-10-15 14:30:00+02 göstərir ki, bu vaxt UTC+2 zonası üçündür.
Bu mövzunu kursda mütləq izah edəcəyik, sadəcə bir az sonra :P
Nümunə
İndi gəlin yeni öyrəndiklərimizi praktikada yoxlayaq. Tələbələrin dərs cədvəlini saxlayan bir cədvəl yaradaq.
| id | subject_name | class_date - DATE | start_time - TIME | end_time - TIME | created_at - TIMESTAMP |
|---|---|---|---|---|---|
| 1 | Mathematics | 2023-10-16 | 09:00:00 | 10:30:00 | 2023-10-12 14:00:00 |
| 2 | Physics | 2023-10-16 | 11:00:00 | 12:30:00 | 2023-10-12 14:00:00 |
| 3 | Chemistry | 2023-10-17 | 09:00:00 | 10:30:00 | 2023-10-12 14:01:00 |
| 4 | Literature | 2023-10-17 | 11:00:00 | 12:30:00 | 2023-10-12 14:01:00 |
| 5 | Computer Science | 2023-10-18 | 10:00:00 | 11:30:00 | 2023-10-12 14:02:00 |
Bir neçə leksiyadan sonra belə cədvəlləri SQL sorğuları ilə bazada yaradacaqsan. Hələlik sadəcə baxıb zövq alırıq :)
Tipik səhvlər
Tarix və vaxt formatı: data əlavə edəndə düzgün format saxlamaq vacibdir: tarix üçün YYYY-MM-DD, vaxt üçün HH:MI:SS. PostgreSQL başa düşməyəcək, əgər tarixi "15/10/2023" kimi yazsan.
Data tipinin uyğun olmaması: DATE tipli sahəyə mətn dəyəri yazmağa çalışsan, səhv çıxacaq.
Zaman intervalları səhvləri: məsələn, fevral ayına 30 gün əlavə etsən, PostgreSQL bunu düzgün hesablayacaq, amma tarix artıq martda olacaq.
Artıq PostgreSQL-də tarix və vaxt üçün data tipləri ilə tanışsan. Real layihələrdə bu, cədvəlləri idarə etməyə, hadisələri log etməyə və ya sistemdə vacib hadisələri izləməyə kömək edir!
GO TO FULL VERSION