2012-08-21 9 views
6

क्या PostgreSQL में अब() फ़ंक्शन के परिणाम से परिशुद्धता को हटाने का कोई तरीका है? होने के लिएअब से TIMESTAMP परिशुद्धता निकालें() परिणाम PostgreSQL में?

"2012-08-21 10:23:34.867502" 

मैं प्रारूप के लिए देख रहा हूँ:

"2012-08-21 10:23:34" 

मैं निम्नलिखित एसक्यूएल के साथ "समय क्षेत्र के बिना टाइमस्टैम्प" प्रकार का एक स्तंभ को अद्यतन करने का प्रयास कर रहा हूँ:

UPDATE table SET column = now(); 

धन्यवाद!

+1

क्या इससे कोई नुकसान होता है? यदि कॉलम प्रकार उनका समर्थन नहीं करता है तो डेटाबेस को मिलीसेकंड को छोड़ना चाहिए। – Crozin

+0

यह जानना अच्छा है, धन्यवाद। मुझे यकीन नहीं था कि यह कुछ भी प्रभावित करेगा। – littleK

उत्तर

9
UPDATE tbl SET col = DATE_TRUNC('second', NOW()); 

DATE_TRUNC के लिए दस्तावेज़ देखें।

+0

धन्यवाद, पायलक्रो। मैं प्रलेखन के माध्यम से मिल रहा था और मैं इसे कहीं भी नहीं मिला। मुझे लगता है कि मैं गलत जगह पर देख रहा था। – littleK

+0

@littleK नए कोड में 'अब() 'या (बदतर)' 'अब' :: timestamp' के बजाय SQL-standard time फ़ंक्शंस 'current_timestamp' आदि का उपयोग करने के लायक हो सकता है। देखें http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT –

14

सरल उत्तर इसे शून्य परिशुद्धता में डालना है। 0 पर अपने सटीक सेट करते समय लीगेसी प्रोग्राम है कि timestamps में आंशिक सेकंड संभाल नहीं है साथ PostgreSQL का उपयोग कर यह उपयोगी हो सकता -

select now()::timestamptz(0); 
+0

+1 एक उत्कृष्ट विकल्प – pilcrow

+0

+ यह विधि टाइमज़ोन रखती है – MingalevME

0

अपनी आवश्यकताओं के आधार पर, एक और विकल्प टाइमस्टैम्प स्तंभ ही की परिशुद्धता समायोजित करने के लिए है ।

2

आप अपनी तालिका इल की संरचना को बदल सकते हैं आप pgAdmin 3 में 0 करने के लिए स्तंभ की लंबाई चलाएँ या अपनी टाइमस्टैम्प का उपयोग करके एक तालिका बनाने के अगर (0) इस तरह:

CREATE TABLE public.users 
(
    id integer serial, 
    username character varying(255) NOT NULL, 
    email character varying(255) NOT NULL, 
    password character varying(255) NOT NULL, 
    created_at timestamp(0) without time zone NOT NULL, 
    updated_at timestamp(0) without time zone NOT NULL, 

    CONSTRAINT users_pkey PRIMARY KEY (id) 
); 

लेकिन यदि आप ऐसा करते हैं तो एक त्रुटि होगी यदि आप मिलीसेकंड के साथ टाइमस्टैम्प डालने का प्रयास करते हैं।

संबंधित मुद्दे