আমার timestampএটির একটি ক্ষেত্র সহ একটি ওরাকল ডিবি আছে । timestampএই ক্ষেত্রে একটি প্রবেশ করানোর জন্য সঠিক এসকিউএল কোডটি কী ?
আমার timestampএটির একটি ক্ষেত্র সহ একটি ওরাকল ডিবি আছে । timestampএই ক্ষেত্রে একটি প্রবেশ করানোর জন্য সঠিক এসকিউএল কোডটি কী ?
উত্তর:
insert
into tablename (timestamp_value)
values (TO_TIMESTAMP(:ts_val, 'YYYY-MM-DD HH24:MI:SS'));
আপনি যদি বর্তমান সময়ের স্ট্যাম্পটি sertedোকাতে চান তবে:
insert
into tablename (timestamp_value)
values (CURRENT_TIMESTAMP);
TO_DATEবদলে কেন TO_TIMESTAMP?
INSERTবিবৃতিটির জন্য এটি কোনও বিষয় নয় , তবে সাধারণভাবে আপনি এর মতো বাইন্ড ভেরিয়েবল ব্যবহার করতে চান না। আপনার প্রথম বিবৃতিতে ধরণের রূপান্তর এটি বাঁধাকর্ষণ সংবেদনশীল হতে বাধা দেয়, যা ভাল পরিকল্পনা তৈরির ওরাকলের ক্ষমতা সীমাবদ্ধ করে। আপনি values (:ts_val)পরিবর্তে এটি ব্যবহার করে অপ্টিমাইজার আরও ভাল কাজ করতে পারে , ধরে নেওয়া: ts_val মানচিত্র সরাসরি একটি টাইমস্ট্যাম্পে।
to_timestampপরিকল্পনা-সক্ষম এসকিউএল স্টেটমেন্টের জন্য খারাপ প্রয়োগের পরিকল্পনার কারণ হতে পারেন তার একটি নির্দিষ্ট উদাহরণ দেখাতে পারেন ? এটি কীভাবে হবে না তার একটি উদাহরণ আমি দেখাতে পারি। পরিবর্তে, আমি যা মনে করি আমরা সকলেই এড়াতে চাই তা হ'ল অপ্রত্যাশিত ডেটা টাইপ জবরদস্তি যা প্রত্যাশিত সারি উত্স অপারেশন (যেমন, সর্বোত্তম এক) ব্যবহার করা থেকে বিরত থাকে।
আপনি যে মানটি সন্নিবেশ করতে চান তা কোথা থেকে আসছে তা নির্ভর করে। আপনি যদি বর্তমান সময় সন্নিবেশ করতে চান তবে আপনি CURRENT_TIMESTAMPঅন্যান্য উত্তরে (বা SYSTIMESTAMP) হিসাবে দেখানো হিসাবে ব্যবহার করতে পারেন ।
আপনার যদি স্ট্রিং হিসাবে সময় থাকে এবং এটি একটি টাইমস্ট্যাম্পে রূপান্তর করতে চান, তবে একটি মত প্রকাশ করুন
to_timestamp(:timestamp_as_string,'MM/DD/YYYY HH24:MI:SS.FF3')
সময় বিন্যাসের উপাদানগুলি হ'ল, আমি আশা করি, স্ব-ব্যাখ্যামূলক except FF3 হ'ল উপ-দ্বিতীয় যথার্থতার 3 অঙ্ক s আপনি যথাযথতার 6 টি অঙ্কের উপরে যেতে পারেন।
আপনি যদি কোনও অ্যাপ্লিকেশন থেকে সন্নিবেশ করিয়ে থাকেন তবে সর্বোত্তম উত্তরটি কীভাবে আপনার ভাষায় তারিখ / সময় মান সংরক্ষণ করা হয় তার উপর নির্ভর করে। উদাহরণস্বরূপ আপনি কয়েকটি জাভা অবজেক্ট সরাসরি TIMESTAMPকলামে ম্যাপ করতে পারেন , তবে আপনাকে JDBCম্যাপিং টাইপগুলি বুঝতে হবে ।
আমি এএনএসআই টাইমস্ট্যাম্প আক্ষরিক পছন্দ:
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
timestamp '2019-05-16 10:05:51:19:277401'আমার এই ত্রুটি রয়েছে: ORA-01882: টাইমজোন অঞ্চল পাওয়া যায় নি
আমার নিজের ভবিষ্যতের রেফারেন্সের জন্য:
সিএক্স_আরাকল ব্যবহার করে কার্সার.সেটিনপুটসাইজ (...) ব্যবহার করুন:
mycursor = connection.cursor();
mycursor.setinputsize( mytimestamp=cx_Oracle.TIMESTAMP );
params = { 'mytimestamp': timestampVar };
cusrsor.execute("INSERT INTO mytable (timestamp_field9 VALUES(:mytimestamp)", params);
ডিবিতে কোনও রূপান্তর দরকার নেই। ওরাকল ডকুমেন্টেশন দেখুন
একটি সহজভাবে ব্যবহার করতে পারেন
INSERT INTO MY_TABLE(MY_TIMESTAMP_FIELD)
VALUES (TIMESTAMP '2019-02-15 13:22:11.871+02:00');
এইভাবে আপনাকে তারিখের ফর্ম্যাট স্ট্রিং সম্পর্কে চিন্তা করতে হবে না, কেবলমাত্র ডিফল্ট টাইমস্ট্যাম্প ফর্ম্যাটটি ব্যবহার করুন।
ওরাকল 11 এর সাথে কাজ করে, এটি পূর্বের ওরাকল সংস্করণগুলির জন্য না করে কোনও ধারণা নেই।
CREATE TABLE Table1 (
id int identity(1, 1) NOT NULL,
Somecolmn varchar (5),
LastChanged [timestamp] NOT NULL)
এটি এমএসকিউএল ২০১২ এর জন্য কাজ করে
INSERT INTO Table1 VALUES('hello',DEFAULT)