ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 6 · 4లో పాఠం 2కోర్సులో 22/57~12 min
మాడ్యూల్ పాఠాలు (2/4)

తేదీ మరియు సమయముద్ర విధులు

తేదీలు మరియు టైమ్‌స్టాంప్‌లు ప్రతిచోటా ఉన్నాయి: ఆర్డర్‌లు, లాగిన్‌లు, ఈవెంట్‌లు, బిల్లింగ్. లో ఈ పాఠం తేదీ (సంవత్సరం, నెల...) నుండి భాగాలను ఎలా సంగ్రహించాలో చూద్దాం. ** కుదించు** దానిని గ్రాన్యులారిటీకి (నెల, వారం...), గణించండి ** విరామాలు** మరియు వ్యత్యాసాలు, మరియు కాలాల్లో పోలికలు చేయండి.

బేస్ రకాలు

PostgreSQL వేరు చేస్తుంది:

  • DATE — తేదీ మాత్రమే, ఫార్మాట్ YYYY-MM-DD;
  • TIMESTAMP — తేదీ + సమయం, సమయమండలి లేదు;
  • TIMESTAMPTZ — తేదీ + సమయం + సమయమండలి;
  • INTERVAL — ఒక కాలం (ఉదా. '3 days', '2 hours 30 minutes').

మా ecommerce డేటాసెట్‌లో:

కాలమ్రకం
customers.signed_up_onDATE
orders.ordered_atTIMESTAMP
orders.shipped_atTIMESTAMP (NULL కావచ్చు)

ఎక్స్‌ట్రాక్ట్ — ఒక భాగాన్ని చదవడం

EXTRACT(part FROM date) ఒక సంఖ్యను సంగ్రహిస్తుంది:

SQL
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) తేదీని గ్రాన్యులారిటీకి "కుదించింది". ఇది అవసరం నెల, వారం, గంట వారీగా సమగ్రపరచడం కోసం:

SQL
-- 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 ఉత్పత్తి అవుతుంది:

SQL
SELECT id,
       shipped_at - ordered_at AS wait_time
FROM   orders
WHERE  shipped_at IS NOT NULL;

INTERVAL అక్షరాలతో పోలికలు:

SQL
WHERE  shipped_at - ordered_at > INTERVAL '1 day'

తేదీకి రోజులు జోడించడం:

SQL
SELECT signed_up_on + INTERVAL '30 days' AS trial_expiration
FROM   customers;

దీనిని ప్రయత్నించండి

వ్యాయామం#sql.m6.l2.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

సంవత్సరానికి ఎన్ని ఆర్డర్లు ఉంచబడ్డాయో లెక్కించండి. రెండు నిలువు వరుసలు: సంవత్సరం (పూర్ణాంకం) మరియు ఆర్డర్_కౌంట్. ఆరోహణ సంవత్సరం వారీగా ఆర్డర్ చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

EXTRACT(YEAR FROM order_at) ఒక NUMERICని అందిస్తుంది: చదవడానికి ::intతో పూర్ణాంకానికి ప్రసారం చేయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం సమీక్షించండి

వ్యాయామం#sql.m6.l2.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

2024లోని ప్రతి నెలలో, నెలలోని మొదటి రోజు (కాలమ్ నెల, రకం తేదీ) మరియు ఆర్డర్‌ల సంఖ్యను చూపండి. నెలవారీగా ఆర్డర్ చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

DATE_TRUNC('నెల', ఆర్డర్_వద్ద) నెల మొదటి రోజుని టైమ్‌స్టాంప్‌గా అందిస్తుంది; :: తేదీ దానిని తేదీకి మారుస్తుంది.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది