మాడ్యూల్ పాఠాలు (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(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.
తేడాలు మరియు విరామాలు
రెండు TIMESTAMPs తీసివేస్తే 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('నెల', ఆర్డర్_వద్ద) నెల మొదటి రోజుని టైమ్స్టాంప్గా అందిస్తుంది; :: తేదీ దానిని తేదీకి మారుస్తుంది.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది