समस्या:
आपके पास 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() के बारे में अधिक जानकारी दी गई है समारोह।