समस्या:
आपके पास timestamp
. प्रकार के दो कॉलम हैं और आप उनके बीच के अंतर की गणना करना चाहते हैं।
उदाहरण:
travel
तालिका, तीन कॉलम हैं:id
, departure
, और arrival
. आप arrival
. के बीच अंतर की गणना करना चाहेंगे और departure
।
travel
तालिका इस तरह दिखती है:
आईडी | प्रस्थान | आगमन |
---|---|---|
1 | 2018-03-25 12:00:00 | 2018-04-05 07:30:00 |
2 | 2019-09-12 15:50:00 | 2019-10-23 10:30:30 |
3 | 2018-07-14 16:15:00 | 2018-07-14 20:40:30 |
4 | 2018-01-05 08:35:00 | 2019-01-08 14:00:00 |
समाधान 1 (दिन, घंटे, मिनट और सेकंड में अंतर):
SELECT id, departure, arrival, arrival - departure AS difference FROM travel;
नतीजा यह है:
आईडी | प्रस्थान | आगमन | अंतर |
---|---|---|---|
1 | 2018-03-25 12:00:00 | 2018-04-05 07:30:00 | 10 दिन 19:30:00 |
2 | 2019-09-12 15:50:00 | 2019-10-23 10:30:30 | 40 दिन 18:40:30 |
3 | 2018-07-14 16:15:00 | 2018-07-14 20:40:30 | 04:25:30 |
4 | 2018-01-05 08:35:00 | 2019-01-08 14:00:00 | 368 दिन 05:25:00 |
चर्चा:
PostgreSQL में टाइमस्टैम्प के बीच अंतर की गणना करने के लिए, बस प्रारंभ टाइमस्टैम्प को अंत टाइमस्टैम्प से घटाएं। यहाँ, यह होगा arrival - departure
. अंतर interval
. प्रकार का होगा , जिसका अर्थ है कि आप इसे दिनों, घंटों, मिनटों और सेकंडों में देखेंगे।
समाधान 2 (वर्षों, महीनों, दिनों, घंटों, मिनटों और सेकंड में अंतर):
SELECT id, departure, arrival, AGE(arrival, departure) AS difference FROM travel;
नतीजा यह है:
आईडी | प्रस्थान | आगमन | अंतर |
---|---|---|---|
1 | 2018-03-25 12:00:00 | 2018-04-05 07:30:00 | 10 दिन 19:30:00 |
2 | 2019-09-12 15:50:00 | 2019-10-23 10:30:30 | 1 सोम 10 दिन 18:40:30 |
3 | 2018-07-14 16:15:00 | 2018-07-14 20:40:30 | 04:25:30 |
4 | 2018-01-05 08:35:00 | 2019-01-08 14:00:00 | 1 वर्ष 3 दिन 05:25:00 |
चर्चा:
यदि आप वर्षों, महीनों, दिनों, घंटों, मिनटों और सेकंड में अंतर प्राप्त करना चाहते हैं, तो AGE(end, start)
का उपयोग करें समारोह। यहाँ, यह होगा AGE(arrival, departure)
. इस समाधान में, परिणामी स्तंभ भी interval
. प्रकार का होता है ।
समाधान 3 (सेकंड में अंतर):
SELECT id, departure, arrival, EXTRACT(EPOCH FROM (arrival - departure)) AS difference FROM travel;
आईडी | प्रस्थान | आगमन | अंतर |
---|---|---|---|
1 | 2018-03-25 12:00:00 | 2018-04-05 07:30:00 | 934200 |
2 | 2019-09-12 15:50:00 | 2019-10-23 10:30:30 | 3523230 |
3 | 2018-07-14 16:15:00 | 2018-07-14 20:40:30 | 15930 |
4 | 2018-01-05 08:35:00 | 2019-01-08 14:00:00 | 31814700 |
चर्चा:
यदि आप PostgreSQL में सेकंड में टाइमस्टैम्प के बीच अंतर की गणना करना चाहते हैं, तो एक तारीख को दूसरी से घटाएं (यहां:arrival - departure
) फिर EPOCH
extract निकालें अंतर से इसे सेकंड में प्राप्त करने के लिए। यहां EXTRACT()
के बारे में अधिक जानकारी दी गई है समारोह।