timestamp with time zone
का उपयोग करें (timestamptz
) गणना के लिए।
अलार्म का समय time [without time zone]
हो सकता है .
लेकिन आपको समय क्षेत्र को बचाना होगा स्पष्ट रूप से प्रत्येक पंक्ति के लिए।
कभी नहीं time with time zone
. का उपयोग करें यह तार्किक रूप से टूटा हुआ प्रकार है, इसका उपयोग PostgreSQL द्वारा हतोत्साहित किया जाता है। मैनुअल:
डेमो सेटअप:
CREATE TABLE alarm(name text, t time, tz text);
INSERT INTO alarm VALUES
('Alfred', '04:00', 'Europe/Stockholm') -- Alfred sets an alarm for 4 AM.
, ('Lotta', '05:00', 'Europe/Stockholm') -- Lotta sets an alarm for 5 AM.
, ('Sharon', '11:00', 'Asia/Singapore'); -- Sharon has set an alarm for 11 AM.
यह समय क्षेत्र होना चाहिए नाम (संक्षिप्त नहीं) डीएसटी के लिए खाते में। संबंधित:
"आज" के लिए मिलते-जुलते अलार्म पाएं:
SELECT *
FROM alarm
WHERE (('2012-07-01'::date + t) AT TIME ZONE tz AT TIME ZONE 'UTC')::time
= '03:00'::time
('2012-7-1'::date + t)
...timestamp [without time zone]
इकट्ठा करें बसnow()::date + t
भी हो सकता है "आज" के लिए।AT WITH TIME ZONE tz
... टाइमस्टैम्प को सहेजे गए समय क्षेत्र पर रखें, जिसके परिणामस्वरूपtimestamptz
।AT WITH TIME ZONE 'UTC'
... UTC के अनुसार प्राप्त करेंtimestamp
::time
... समय घटक निकालने का सबसे आसान तरीका।
यहां आप समय क्षेत्र के नाम :
SELECT *
FROM pg_timezone_names
WHERE name ~~* '%sing%'
LIMIT 10
SQL Fiddle गर्मी / सर्दी का प्रदर्शन।