3.1 Sana va vaqt bilan ishlash uchun funksiyalar ro'yxati
Sana va vaqt - bu Ma'lumotlar Bazasida saqlanadigan eng keng tarqalgan ma'lumot turlaridan biridir. Shuning uchun ular bilan ishlash uchun funksiyalar ro'yxati juda katta. Eng mashhurlari quyidagilar:
| # | Funksiya | Tavsif |
|---|---|---|
| 1 | CURDATE() | Hozirgi sanani qaytaradi |
| 2 | CURTIME() | Hozirgi vaqtni qaytaradi |
| 3 | NOW(), LOCALTIME() | Hozirgi sana va vaqtni qaytaradi |
| 4 | YEAR() | Sanadan yillarni qaytaradi |
| 5 | MONTH() | Sanadan oylarni qaytaradi |
| 6 | DAY(), DAYOFMONTH() | Sanadan kunlarni qaytaradi |
| 7 | HOUR() | Faqat soatni vaqt dan qaytaradi |
| 8 | MINUTE() | Vaqtdan daqiqalarni qaytaradi |
| 9 | SECOND() | Vaqtdan sekundlarni qaytaradi |
| 10 | DAYNAME() | Hafta kunining nomini qaytaradi: Monday, ... |
| 11 | MONTHNAME() | Oyning nomini qaytaradi: Январь, … |
| 12 | WEEK() | Sanadan haftani qaytaradi |
| 13 | WEEKDAY() | Hafta kunining raqamini qaytaradi: Дүйшанба – 0, Сешанба – 1 |
| 14 | WEEKOFYEAR() | Yilda haftaning raqamini qaytaradi |
| 15 | DAYOFWEEK() | Hafta kunining nomini qaytaradi |
| 16 | DAYOFYEAR() | Yilning kunini qaytaradi: 1-366 |
| 17 | DATE() | Faqat sana va vaqt obyektidan sanani qaytaradi |
| 18 | ADDDATE() | Sana qo'shadi |
| 19 | SUBDATE() | Sanadan o'chiradi |
| 20 | ADDTIME() | Vaqt qo'shadi |
| 21 | SUBTIME() | Vaqt o'chiradi |
Men funksiyalarni kichik guruhlarga ajratdim, shunda ular bilan ishlashni oson tushunish mumkin bo'ladi. Quyida biz har bir guruhdan bitta funksiya ko'rib chiqamiz.
Sana va vaqt bilan ishlash uchun to'liq funksiyalar ro'yxatini bu havoladan topishingiz mumkin: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 Funksiyalarni chaqirish
Aytgancha, shuncha ko'p funksiya o'rganayotganimizdan beri, SELECT operatorini FROM bilan birga ishlatish shart emasligini eslatib o'tmoqchiman. U har qanday ifodaning qiymatini qaytarishi mumkin. Uning umumiy ko'rinishi quyidagi shaklda beriladi:
SELECT ifoda
Agar siz biror funksiyani chaqirmoqchi bo'lsangiz, quyidagi kodni yozishingiz kerak:
SELECT funksiya(parametrlar)
Quyida SELECT operatorining jadvalga murojaat qilmasdan ishlashiga bir nechta misollar keltiraman:
| # | So'rov | Natija |
|---|---|---|
| 1 | SELECT 1+1 | 2 |
| 2 | SELECT 13 MOD 5 | 3 |
| 3 | SELECT RAND() | 0.20771444235715497 |
| 4 | SELECT CURDATE() | 2022-06-04 |
| 5 | SELECT CURTIME() | 00:06:02 |
| 6 | SELECT NOW() | 2022-06-04 00:06:43 |
Yuqoridagi jadvalda ko'rib turganingizdek, hozirgi sana va vaqtni olish uchun sizga quyidagi funksiyalardan biri kerak bo'ladi:
CURDATE()– joriy sana;CURTIME()– joriy vaqt;NOW()– joriy sana va vaqt.
3.3 Ma'lumotlarni yil va oy bo'yicha guruhlash
Keling, xodimlar uchun vazifalar bilan task jadvalimizni eslaylik. Ushbu jadvaldagi vazifalarni yillar bo'yicha guruhlashga harakat qilamiz. Buning uchun YEAR() funksiya foydalanamiz, u berilgan sanadan yilni qaytaradi.
Bizning so'rovimizning birinchi versiyasi quyidagi ko'rinishda bo'ladi:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
Bu so'rovning natijasi quyidagicha bo'ladi:
| id | employee_id | name | year | deadline |
|---|---|---|---|---|
| 1 | 1 | Front-enddagi xatoni tuzating | 2022 | 2022-06-01 |
| 2 | 2 | Back-enddagi xatoni tuzating | 2022 | 2022-06-15 |
| 3 | 5 | Kofe sotib oling | 2022 | 2022-07-01 |
| 4 | 5 | Kofe sotib oling | 2022 | 2022-08-01 |
| 5 | 5 | Kofe sotib oling | 2022 | 2022-09-01 |
| 6 | (NULL) | Ofisni tozalang | (NULL) | (NULL) |
| 7 | 4 | Hayotdan zavqlaning | (NULL) | (NULL) |
| 8 | 6 | Hayotdan zavqlaning | (NULL) | (NULL) |
Barcha satrlar bir xil yilda ekanligini ko'rib turibmiz, shuning uchun ikkinchi variantda yil va oy maydonlaridan foydalanamiz. Bizning so'rovimizning ikkinchi versiyasi quyidagi ko'rinishda bo'ladi:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
Bu so'rovning natijasi quyidagicha bo'ladi:
| id | employee_id | name | year | month | deadline |
|---|---|---|---|---|---|
| 1 | 1 | Front-enddagi xatoni tuzating | 2022 | 6 | 2022-06-01 |
| 2 | 2 | Back-enddagi xatoni tuzating | 2022 | 6 | 2022-06-15 |
| 3 | 5 | Kofe sotib oling | 2022 | 7 | 2022-07-01 |
| 4 | 5 | Kofe sotib oling | 2022 | 8 | 2022-08-01 |
| 5 | 5 | Kofe sotib oling | 2022 | 9 | 2022-09-01 |
| 6 | (NULL) | Ofisni tozalang | (NULL) | (NULL) | (NULL) |
| 7 | 4 | Hayotdan zavqlaning | (NULL) | (NULL) | (NULL) |
| 8 | 6 | Hayotdan zavqlaning | (NULL) | (NULL) | (NULL) |
Vazifalarni yil va oy bo'yicha guruhlashni qanday amalga oshirishni aytib o'tirmayman – sen buni allaqachon o'rgangansan: GROUP BY operatoridan foydalan.
GO TO FULL VERSION