2011-03-24 16 views
57

मेरे पास एक ओरेकल डीबी है जिसमें timestamp फ़ील्ड है। इस क्षेत्र में timestamp डालने के लिए सही SQL कोड क्या है?ओरेकल में टाइमस्टैम्प कैसे सम्मिलित करें?

+6

ओरेकल डॉक्यूमेनेशन व्यापक और ऑनलाइन है। इसे यहां खोजें: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/toc.htm – APC

उत्तर

91
insert 
into tablename (timestamp_value) 
values (TO_TIMESTAMP(:ts_val, 'YYYY-MM-DD HH24:MI:SS')); 

अगर आप चाहते हैं वर्तमान समय स्टाम्प तो सम्मिलित करने के लिए:

insert 
into tablename (timestamp_value) 
values (CURRENT_TIMESTAMP); 
+1

'TO_TIMESTAMP' के बजाय' TO_DATE' क्यों? –

+0

@dAVE मैंने TO_TIMESTAMP() को उत्तर अपडेट किया है। – reggie

+0

इससे इस सरल 'INSERT' कथन के लिए कोई फर्क नहीं पड़ता, लेकिन आम तौर पर आप इस तरह के बाध्य चर का उपयोग नहीं करना चाहते हैं। आपके पहले कथन में प्रकार का रूपांतरण इसे संवेदनशील होने से रोकता है, जो ओरेकल की अच्छी योजना बनाने की क्षमता को सीमित करता है। ऑप्टिमाइज़र बेहतर काम कर सकता है यदि आप 'मान (: ts_val)' का उपयोग करते हैं, मानते हैं: ts_val नक्शे सीधे टाइमस्टैम्प पर। –

20
INSERT 
INTO mytable (timestamp_field) 
VALUES (CURRENT_TIMESTAMP) 

CURRENT_TIMESTAMP और SYSTIMESTAMP ओरेकल इस उद्देश्य के लिए शब्द सुरक्षित हैं। वे SYSDATE का टाइमस्टैम्प एनालॉग हैं।

7

तरह का जहां मूल्य आप सम्मिलित करना से आ रही है चाहते हैं पर निर्भर करता है। यदि आप वर्तमान समय डालना चाहते हैं तो आप अन्य उत्तरों (या SYSTIMESTAMP) में दिखाए गए अनुसार CURRENT_TIMESTAMP का उपयोग कर सकते हैं।

आप एक स्ट्रिंग के रूप में एक समय है और यह एक टाइमस्टैम्प कन्वर्ट करने के लिए चाहते हैं,

to_timestamp(:timestamp_as_string,'MM/DD/YYYY HH24:MI:SS.FF3') 

समय प्रारूप घटक हैं जैसे एक अभिव्यक्ति का उपयोग करें, मुझे आशा है कि, आत्म व्याख्यात्मक, सिवाय इसके कि FF3 का मतलब 3 उप-दूसरे परिशुद्धता के अंक। आप परिशुद्धता के 6 अंकों के रूप में उच्च जा सकते हैं।

यदि आप किसी एप्लिकेशन से सम्मिलित हैं, तो सबसे अच्छा उत्तर इस बात पर निर्भर करता है कि आपकी भाषा में दिनांक/समय मूल्य कैसे संग्रहीत किया जाता है। उदाहरण के लिए आप कुछ जावा ऑब्जेक्ट्स को सीधे TIMESTAMP कॉलम पर मैप कर सकते हैं, लेकिन आपको जेडीबीसी प्रकार मैपिंग को समझने की आवश्यकता है।

0

सबसे पहले आपको फ़ील्ड को शून्य बनाने की आवश्यकता है, उसके बाद यह इतना आसान है - एक मूल्य डालने के बजाय इस कोड को CURRENT_TIMESTAMP डाल दें।

11
INSERT INTO TABLE_NAME (TIMESTAMP_VALUE) VALUES (TO_TIMESTAMP('2014-07-02 06:14:00.742000000', 'YYYY-MM-DD HH24:MI:SS.FF')); 
-4
CREATE TABLE Table1 (
id int identity(1, 1) NOT NULL, 
Somecolmn varchar (5), 
LastChanged [timestamp] NOT NULL) 

इस mssql 2012

INSERT INTO Table1 VALUES('hello',DEFAULT) 
0

एसक्यूएल में तिथि सम्मिलित करना के लिए काम करता

insert 
into tablename (timestamp_value) 
values ('dd-mm-yyyy hh-mm-ss AM'); 

तो लगता है हम प्रणाली की तारीख सम्मिलित करने के लिए चाहता था

insert 
into tablename (timestamp_value) 
values (sysdate); 
0

अपने ही भविष्य में संदर्भ के लिए:

cx_Oracle उपयोग cursor.setinputsize (...) के साथ:

mycursor = connection.cursor(); 

mycursor.setinputsize(mytimestamp=cx_Oracle.TIMESTAMP); 
params = { 'mytimestamp': timestampVar }; 
cusrsor.execute("INSERT INTO mytable (timestamp_field9 VALUES(:mytimestamp)", params); 

कोई डाटाबेस की जरूरत में परिवर्तित। Oracle Documentation

1

देखें मैं एएनएसआई टाइमस्टैम्प शाब्दिक पसंद करते हैं: मैनुअल में

insert into the_table 
    (the_timestamp_column) 
values 
    (timestamp '2017-10-12 21:22:23'); 

अधिक जानकारी: "। मैं इस जानकारी कहीं भी नहीं मिल सकता है" https://docs.oracle.com/database/121/SQLRF/sql_elements003.htm#SQLRF51062

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