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 गर्मी / सर्दी का प्रदर्शन।