9. Analysts साठी Date आणि Time queries
9.3 दोन dates मधला फरक कसा काढायचा (Cheque clearing उशिराची गोष्ट)
का (Why). Cheque clear व्हायला खूप वेळ लागला की customers तक्रार करतात. Bank ला दोन dates मधले दिवस मोजायला हवेत.
काय (What). julianday(date) date चं एका day number मध्ये रूपांतर करतं. दोन julianday values वजा केल्या की त्यांच्या मधले दिवस मिळतात. date(value, '+3 days') date पुढे सरकवतं, जे due dates साठी उपयोगी आहे.
कसं (How). प्रत्येक cheque साठी clearing date मधून posting date वजा करा, आणि posting नंतर तीन दिवसांची promised date पण दाखवा.
पायऱ्या
- प्रत्येक cheque चे days_to_clear बघायला पहिलं उदाहरण run करा.
- Clearing date नसलेल्या cheque समोर NULL दिसतो, कारण तो अजून clear झालेला नाही, हे लक्षात घ्या.
- Posting नंतर तीन दिवसांची promised date बघायला दुसरं उदाहरण run करा.
- julianday() मध्ये date(posted_at) वापरा, म्हणजे दिवसातल्या वेळेमुळे अर्धवट दिवस जोडला जात नाही.
उदाहरणे
उदाहरण 1 · dataset: northstar_bank
SELECT txn_id,
date(posted_at) AS posted_date,
cleared_on,
julianday(cleared_on) - julianday(date(posted_at)) AS days_to_clear
FROM transactions
WHERE txn_type = 'cheque'
ORDER BY txn_id;Output
| txn_id | posted_date | cleared_on | days_to_clear |
|---|---|---|---|
| 2 | 2026-08-19 | 2026-08-21 | 2.0 |
| 4 | 2026-08-28 | 2026-09-02 | 5.0 |
| 6 | 2026-08-30 | 2026-09-01 | 2.0 |
| 9 | 2026-09-14 | 2026-09-18 | 4.0 |
| 13 | 2026-09-25 | 2026-09-29 | 4.0 |
| 15 | 2026-09-29 | ||
| 18 | 2026-10-20 | 2026-10-23 | 3.0 |
| 20 | 2026-10-27 | ||
| 24 | 2026-10-31 | 2026-11-02 | 2.0 |
Meaning. बहुतेक cheques 2 ते 5 दिवसांत clear होतात. दोन cheques समोर NULL आहे, कारण ते अजून clear झालेले नाहीत.
उदाहरण 2 · dataset: northstar_bank
SELECT txn_id,
date(posted_at) AS posted_date,
date(posted_at, '+3 days') AS promised_by,
cleared_on
FROM transactions
WHERE txn_type = 'cheque'
AND cleared_on IS NOT NULL
ORDER BY txn_id;Output
| txn_id | posted_date | promised_by | cleared_on |
|---|---|---|---|
| 2 | 2026-08-19 | 2026-08-22 | 2026-08-21 |
| 4 | 2026-08-28 | 2026-08-31 | 2026-09-02 |
| 6 | 2026-08-30 | 2026-09-02 | 2026-09-01 |
| 9 | 2026-09-14 | 2026-09-17 | 2026-09-18 |
| 13 | 2026-09-25 | 2026-09-28 | 2026-09-29 |
| 18 | 2026-10-20 | 2026-10-23 | 2026-10-23 |
| 24 | 2026-10-31 | 2026-11-03 | 2026-11-02 |
Meaning. promised_by ही posting नंतरची तिसरी date आहे. ज्या row मध्ये cleared_on ही promised_by नंतर आहे, तिथे promise मोडलं.
Ravindra Bagale's Tip
julianday() can return a decimal when times are included. Wrap date-time text in date() when you only want whole days.
Ravindra Bagale's Tip – मराठी
Times सोबत असतील तर julianday() दशांश आकडा देऊ शकतं. फक्त पूर्ण दिवस हवे असतील तर date-time text date() मध्ये गुंडाळा.
Ravindra Bagale's Tip – हिंदी
Times साथ हों तो julianday() दशमलव वाला आंकड़ा दे सकता है। सिर्फ़ पूरे दिन चाहिए हों तो date-time text को date() में लपेटिए।