Ravindra BagaleCourses & study guides Track your progress

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 पण दाखवा.

पायऱ्या

  1. प्रत्येक cheque चे days_to_clear बघायला पहिलं उदाहरण run करा.
  2. Clearing date नसलेल्या cheque समोर NULL दिसतो, कारण तो अजून clear झालेला नाही, हे लक्षात घ्या.
  3. Posting नंतर तीन दिवसांची promised date बघायला दुसरं उदाहरण run करा.
  4. 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_idposted_datecleared_ondays_to_clear
22026-08-192026-08-212.0
42026-08-282026-09-025.0
62026-08-302026-09-012.0
92026-09-142026-09-184.0
132026-09-252026-09-294.0
152026-09-29
182026-10-202026-10-233.0
202026-10-27
242026-10-312026-11-022.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_idposted_datepromised_bycleared_on
22026-08-192026-08-222026-08-21
42026-08-282026-08-312026-09-02
62026-08-302026-09-022026-09-01
92026-09-142026-09-172026-09-18
132026-09-252026-09-282026-09-29
182026-10-202026-10-232026-10-23
242026-10-312026-11-032026-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.