SQLite da sana (date) uchun alohida maxsus tur yo'q. Sanalar oddiy matn (text) ko'rinishida, YYYY-MM-DD formatida saqlanadi — ya'ni avval yil (4 raqam), keyin oy (2 raqam), keyin kun (2 raqam), chiziqcha bilan ajratiladi.
Masalan, 2024-01-15 — bu 2024-yilning yanvar oyidagi 15-kun.
Quyidagi buyurtmalar jadvalining sana ustuniga e'tibor bering:
| id | mijoz_id | mahsulot_id | soni | sana |
|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 2024-01-15 |
| 2 | 1 | 4 | 3 | 2024-01-20 |
| 3 | 2 | 2 | 1 | 2024-02-05 |
| 4 | 3 | 6 | 10 | 2024-02-10 |
| 5 | 5 | 3 | 2 | 2024-03-01 |
| 6 | 1 | 5 | 5 | 2024-03-15 |
| 7 | 6 | 8 | 4 | 2024-03-20 |
Eslatma: Sana matn bo'lgani uchun uni xuddi oddiy matn kabi
ORDER BYbilan tartiblash ham mumkin.YYYY-MM-DDformatining ajoyib tomoni shundaki — matn tartibida saralash bilan sana tartibida saralash bir xil natija beradi (chunki avval yil, keyin oy, keyin kun yoziladi).
Ba'zan bizga butun sana emas, balki uning faqat bir qismi kerak bo'ladi: masalan faqat yili yoki faqat oyi. Buning uchun strftime funksiyasidan foydalanamiz.
strftime ikkita narsani oladi: avval qaysi qism kerakligini ko'rsatadigan format, keyin esa sana ustuni:
SELECT strftime('%Y', sana) FROM buyurtmalar;'%Y' — bu "yilni ber" degani. Natija:
2024
2024
2024
2024
2024
2024
2024Eng ko'p ishlatiladigan format belgilari:
| Belgi | Ma'nosi | Misol (2024-01-15 uchun) |
|---|---|---|
%Y | yil | 2024 |
%m | oy | 01 |
%d | kun | 15 |
Muhim: Format belgilari katta-kichik harfga sezgir.
%m(kichik m) — oyni beradi, lekin%M(katta M) — daqiqani bildiradi. Sana uchun har doim kichik%mdan foydalaning.
Bir nechta belgini birga yozish ham mumkin. Masalan, har bir buyurtma qaysi yil va oyda bo'lganini bilmoqchi bo'lsak, '%Y-%m' formatidan foydalanamiz. U yil bilan oyni - chiziqcha bilan birga qaytaradi:
SELECT id, strftime('%Y-%m', sana) FROM buyurtmalar ORDER BY id;Natija:
1|2024-01
2|2024-01
3|2024-02
4|2024-02
5|2024-03
6|2024-03
7|2024-03Bu juda foydali: masalan, "qaysi oyda nechta buyurtma bo'lgan?" degan savollarga javob berishda sanani oy darajasigacha qisqartirib olamiz.
Sana matn bo'lgani uchun uni WHERE da oddiy matn kabi solishtirsa ham bo'ladi. Masalan, fevral oyidan keyingi (2024-02-29 dan katta) buyurtmalarni topish:
SELECT id, sana FROM buyurtmalar WHERE sana > '2024-02-29' ORDER BY sana;Natija:
5|2024-03-01
6|2024-03-15
7|2024-03-20Bu yerda ham YYYY-MM-DD formati yordamga keladi: matnni belgi-belgi solishtirish aynan sana tartibiga to'g'ri keladi.
Eslatma: Solishtirayotgan matningiz ham xuddi shu
YYYY-MM-DDformatida bo'lishi shart. Aks holda taqqoslash noto'g'ri natija berishi mumkin.
Pastdagi kod oynasida buyurtmalar jadvali allaqachon yaratilgan va to'ldirilgan. Sizning vazifangiz — har bir buyurtmaning id sini va sanasining yil-oy qismini (strftime bilan, YYYY-MM ko'rinishida) id bo'yicha tartiblab chiqarish.