कहो मुझे एक अंतराल है जैसे
4 days 10:00:00
पोस्टग्रैज में। मैं इसे कितने घंटे में बदल सकता हूं (इस मामले में 106?) क्या कोई फ़ंक्शन है या मुझे गोली काटनी चाहिए और ऐसा कुछ करना चाहिए
extract(days, my_interval) * 24 + extract(hours, my_interval)
कहो मुझे एक अंतराल है जैसे
4 days 10:00:00
पोस्टग्रैज में। मैं इसे कितने घंटे में बदल सकता हूं (इस मामले में 106?) क्या कोई फ़ंक्शन है या मुझे गोली काटनी चाहिए और ऐसा कुछ करना चाहिए
extract(days, my_interval) * 24 + extract(hours, my_interval)
जवाबों:
शायद सबसे आसान तरीका है:
SELECT EXTRACT(epoch FROM my_interval)/3600
यदि आप पूर्णांक अर्थात दिनों की संख्या चाहते हैं:
SELECT (EXTRACT(epoch FROM (SELECT (NOW() - '2014-08-02 08:10:56')))/86400)::int
SELECT extract('epoch' FROM age('2014-08-02'::timestamp)) / 86400
(मैं पीजी 9.4 का उपयोग कर रहा हूं), क्योंकि age(ts)
स्वचालित रूप से CURRENT_DATE
केवल एक तर्क का उपयोग करते समय।
दिनों की संख्या प्राप्त करने का सबसे आसान तरीका होगा:
SELECT EXTRACT(DAY FROM NOW() - '2014-08-02 08:10:56');
जहां तक मुझे पता है कि यह उसी तरह लौटेगा:
SELECT (EXTRACT(epoch FROM (SELECT (NOW() - '2014-08-02 08:10:56')))/86400)::int;
'1 month 0 days'
, तो उपयोग extract(day from …)
आपको 0
परिणाम के रूप में देगा ।
select floor((date_part('epoch', order_time - '2016-09-05 00:00:00') / 3600)), count(*)
from od_a_week
group by floor((date_part('epoch', order_time - '2016-09-05 00:00:00') / 3600));
::int
रूपांतरण गोलाई के सिद्धांत इस प्रकार है। यदि आप एक अलग परिणाम चाहते हैं जैसे कि नीचे गोलाई, तो आप इसी तरह के गणित फ़ंक्शन का उपयोग कर सकते हैं floor
।
यदि आप तालिका फ़ील्ड में परिवर्तित करते हैं:
फ़ील्ड को परिभाषित करें ताकि इसमें सेकंड हों:
CREATE TABLE IF NOT EXISTS test (
...
field INTERVAL SECOND(0)
);
मान निकालें। अंतर के बड़े होने के बाद अन्य बुद्धिमानों को कास्ट करने के लिए याद रखें एक बार आपको एक अप्रिय आश्चर्य हो सकता है:
EXTRACT(EPOCH FROM field)::int
select date 'now()' - date '1955-12-15';
यहाँ सरल क्वेरी है जो कुल दिनों की कुल गणना करती है।