தொகுதி பாடங்கள் (2/4)
தேதி மற்றும் நேரமுத்திரை செயல்பாடுகள்
தேதிகள் மற்றும் நேர முத்திரைகள் எல்லா இடங்களிலும் உள்ளன: ஆர்டர்கள், உள்நுழைவுகள், நிகழ்வுகள், பில்லிங். இல் இந்தப் பாடத்தில் ஒரு தேதியிலிருந்து (ஆண்டு, மாதம்...) பகுதிகளை எவ்வாறு பிரித்தெடுப்பது என்று பார்ப்போம். ** துண்டிக்கவும் ஒரு சிறுமணிக்கு (மாதம், வாரம்…), **இடைவெளிகளைக் கணக்கிடுங்கள்** மற்றும் வேறுபாடுகள், மற்றும் காலம் முழுவதும் ஒப்பீடுகள்.
அடிப்படை வகைகள்
PostgreSQL வேறுபடுத்துகிறது:
DATE— தேதி மட்டும், வடிவம்YYYY-MM-DD;TIMESTAMP— தேதி + நேரம், நேர மண்டலம் இல்லை;TIMESTAMPTZ— தேதி + நேரம் + நேர மண்டலம்;INTERVAL— ஒரு காலம் (எ.கா.'3 days','2 hours 30 minutes').
எங்கள் ecommerce தரவுத்தொகுப்பில்:
| நெடுவரிசை | வகை |
|---|---|
customers.signed_up_on | DATE |
orders.ordered_at | TIMESTAMP |
orders.shipped_at | TIMESTAMP (NULL ஆக இருக்கலாம்) |
EXTRACT - ஒரு பகுதியைப் படித்தல்
EXTRACT(part FROM date) எண்ணைப் பிரித்தெடுக்கிறது:
SELECT EXTRACT(YEAR FROM ordered_at) AS year,
EXTRACT(MONTH FROM ordered_at) AS month,
EXTRACT(DOW FROM ordered_at) AS day_of_week -- 0=domenica
FROM orders;அதிகம் பயன்படுத்தப்படும் பாகங்கள்: YEAR, MONTH, DAY, HOUR, MINUTE, DOW (நாள்
வாரம் 0-6), DOY (ஆண்டின் நாள்).
DATE_TRUNC — ரவுண்டிங் டவுன்
DATE_TRUNC('part', date) தேதியை கிரானுலாரிட்டியாக "துண்டிக்கிறது". அது
அத்தியாவசியம் மாதம், வாரம், மணிநேரம் என தொகுக்க:
-- Tutti gli ordini fatti in "marzo 2025" cadono nello stesso bucket:
SELECT DATE_TRUNC('month', ordered_at) AS month,
COUNT(*) AS order_count
FROM orders
GROUP BY month
ORDER BY month;செல்லுபடியாகும் பாகங்கள்: 'year', 'quarter', 'month', 'week', 'day',
'hour', 'minute', 'second'.
வாசிப்புத்திறனுக்காக, நேரம் தேவையில்லாத போது மக்கள் அடிக்கடி DATE க்கு அனுப்புகிறார்கள்:
DATE_TRUNC('month', ordered_at)::date.
வேறுபாடுகள் மற்றும் இடைவெளிகள்
இரண்டு TIMESTAMPகளை கழித்தால் INTERVAL:
SELECT id,
shipped_at - ordered_at AS wait_time
FROM orders
WHERE shipped_at IS NOT NULL;ஒரு INTERVAL உடன் ஒப்பீடுகள்:
WHERE shipped_at - ordered_at > INTERVAL '1 day'ஒரு தேதியில் நாட்களைச் சேர்த்தல்:
SELECT signed_up_on + INTERVAL '30 days' AS trial_expiration
FROM customers;முயற்சி செய்து பாருங்கள்
ஒரு வருடத்திற்கு எத்தனை ஆர்டர்கள் செய்யப்பட்டன என்பதைக் கணக்கிடுங்கள். இரண்டு நெடுவரிசைகள்: ஆண்டு (முழு எண்) மற்றும் ஆர்டர்_கவுண்ட். ஆண்டு ஏறுவரிசைப்படி ஆர்டர் செய்யுங்கள்.
குறிப்பைக் காட்டு
EXTRACT(YEAR FROM order_at) ஒரு NUMERIC ஐ வழங்கும்: படிக்கக்கூடிய தன்மைக்காக ::int உடன் எண்ணுக்கு அனுப்பவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
மதிப்பாய்வு பயிற்சி
2024 ஆம் ஆண்டின் ஒவ்வொரு மாதத்திற்கும், மாதத்தின் முதல் நாள் (நெடுவரிசை மாதம், வகை தேதி) மற்றும் ஆர்டர்களின் எண்ணிக்கையைக் காட்டவும். மாதவாரியாக ஆர்டர் செய்யுங்கள்.
குறிப்பைக் காட்டு
DATE_TRUNC('month', order_at) மாதத்தின் முதல் நாளை நேர முத்திரையாக வழங்கும்; :: தேதி அதை தேதியாக மாற்றுகிறது.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்