কীভাবে ওরাকলে একটি টাইমস্ট্যাম্প sertোকানো যায়?


93

আমার timestampএটির একটি ক্ষেত্র সহ একটি ওরাকল ডিবি আছে । timestampএই ক্ষেত্রে একটি প্রবেশ করানোর জন্য সঠিক এসকিউএল কোডটি কী ?


9
"আমি এই তথ্য কোথাও পাই না।" ওরাকল ডকুমেন্টেশন ব্যাপক এবং অনলাইন। এটি এখানে সন্ধান করুন: download.oracle.com/docs/cd/B19306_01/server.102/b14200/toc.htm
এপিসি

উত্তর:


142
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);

4
এর TO_DATEবদলে কেন TO_TIMESTAMP?
ডেভ কোস্টা

এই সাধারণ INSERTবিবৃতিটির জন্য এটি কোনও বিষয় নয় , তবে সাধারণভাবে আপনি এর মতো বাইন্ড ভেরিয়েবল ব্যবহার করতে চান না। আপনার প্রথম বিবৃতিতে ধরণের রূপান্তর এটি বাঁধাকর্ষণ সংবেদনশীল হতে বাধা দেয়, যা ভাল পরিকল্পনা তৈরির ওরাকলের ক্ষমতা সীমাবদ্ধ করে। আপনি values (:ts_val)পরিবর্তে এটি ব্যবহার করে অপ্টিমাইজার আরও ভাল কাজ করতে পারে , ধরে নেওয়া: ts_val মানচিত্র সরাসরি একটি টাইমস্ট্যাম্পে।
জন হেলার

@ জনহেলার আপনি কীভাবে to_timestampপরিকল্পনা-সক্ষম এসকিউএল স্টেটমেন্টের জন্য খারাপ প্রয়োগের পরিকল্পনার কারণ হতে পারেন তার একটি নির্দিষ্ট উদাহরণ দেখাতে পারেন ? এটি কীভাবে হবে না তার একটি উদাহরণ আমি দেখাতে পারি। পরিবর্তে, আমি যা মনে করি আমরা সকলেই এড়াতে চাই তা হ'ল অপ্রত্যাশিত ডেটা টাইপ জবরদস্তি যা প্রত্যাশিত সারি উত্স অপারেশন (যেমন, সর্বোত্তম এক) ব্যবহার করা থেকে বিরত থাকে।
জেফ হল্ট

@ জেফ times টাইমস un রূপান্তরিত বাইন্ড ভেরিয়েবল কীভাবে রূপান্তরিত বাইন্ড ভেরিয়েবলকে ছাড়িয়ে নিতে পারে তার ব্যাখ্যার জন্য এই সূচকটি দেখুন । পার্থক্যটি কেবল তখনই বিবেচিত হয় যদি ডেটা স্কিউ হয়। নেটিভ বাইন্ড টাইপের সাথে, ওরাকল ডেটাগুলি আরও ভালভাবে বুঝতে এবং মানগুলির উপর ভিত্তি করে আরও ভাল অনুমান করতে পারে।
জন হেলার

25
INSERT
INTO    mytable (timestamp_field)
VALUES  (CURRENT_TIMESTAMP)

CURRENT_TIMESTAMPএবং SYSTIMESTAMPএই উদ্দেশ্যে ওরাকল সংরক্ষিত শব্দ। এগুলির টাইমস্ট্যাম্প অ্যানালগ SYSDATE


21
INSERT INTO TABLE_NAME (TIMESTAMP_VALUE) VALUES (TO_TIMESTAMP('2014-07-02 06:14:00.742000000', 'YYYY-MM-DD HH24:MI:SS.FF'));

9

আপনি যে মানটি সন্নিবেশ করতে চান তা কোথা থেকে আসছে তা নির্ভর করে। আপনি যদি বর্তমান সময় সন্নিবেশ করতে চান তবে আপনি CURRENT_TIMESTAMPঅন্যান্য উত্তরে (বা SYSTIMESTAMP) হিসাবে দেখানো হিসাবে ব্যবহার করতে পারেন ।

আপনার যদি স্ট্রিং হিসাবে সময় থাকে এবং এটি একটি টাইমস্ট্যাম্পে রূপান্তর করতে চান, তবে একটি মত প্রকাশ করুন

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

সময় বিন্যাসের উপাদানগুলি হ'ল, আমি আশা করি, স্ব-ব্যাখ্যামূলক except FF3 হ'ল উপ-দ্বিতীয় যথার্থতার 3 অঙ্ক s আপনি যথাযথতার 6 টি অঙ্কের উপরে যেতে পারেন।

আপনি যদি কোনও অ্যাপ্লিকেশন থেকে সন্নিবেশ করিয়ে থাকেন তবে সর্বোত্তম উত্তরটি কীভাবে আপনার ভাষায় তারিখ / সময় মান সংরক্ষণ করা হয় তার উপর নির্ভর করে। উদাহরণস্বরূপ আপনি কয়েকটি জাভা অবজেক্ট সরাসরি TIMESTAMPকলামে ম্যাপ করতে পারেন , তবে আপনাকে JDBCম্যাপিং টাইপগুলি বুঝতে হবে ।


4

আমি এএনএসআই টাইমস্ট্যাম্প আক্ষরিক পছন্দ:

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 (6) নাল নয় হিসাবে সংজ্ঞায়িত। ব্যবহার করে timestamp '2019-05-16 10:05:51:19:277401'আমার এই ত্রুটি রয়েছে: ORA-01882: টাইমজোন অঞ্চল পাওয়া যায় নি
অ্যালেক্স 75

1

বর্গক্ষেত্রে dateোকানোর তারিখ

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

মনে করুন আমরা যদি সিস্টেমের তারিখ .োকাতে চাইতাম

insert
into tablename (timestamp_value)
values (sysdate);

0

প্রথমে আপনাকে ক্ষেত্রটি নুলযোগ্য করতে হবে, তারপরে এত সহজ - এর পরিবর্তে কোনও মান রাখার পরিবর্তে এই কোডটি রাখুন CURRENT_TIMESTAMP


0

আমার নিজের ভবিষ্যতের রেফারেন্সের জন্য:

সিএক্স_আরাকল ব্যবহার করে কার্সার.সেটিনপুটসাইজ (...) ব্যবহার করুন:

mycursor = connection.cursor();

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

ডিবিতে কোনও রূপান্তর দরকার নেই। ওরাকল ডকুমেন্টেশন দেখুন


0

একটি সহজভাবে ব্যবহার করতে পারেন

INSERT INTO MY_TABLE(MY_TIMESTAMP_FIELD)
VALUES (TIMESTAMP '2019-02-15 13:22:11.871+02:00');

এইভাবে আপনাকে তারিখের ফর্ম্যাট স্ট্রিং সম্পর্কে চিন্তা করতে হবে না, কেবলমাত্র ডিফল্ট টাইমস্ট্যাম্প ফর্ম্যাটটি ব্যবহার করুন।

ওরাকল 11 এর সাথে কাজ করে, এটি পূর্বের ওরাকল সংস্করণগুলির জন্য না করে কোনও ধারণা নেই।


-6
CREATE TABLE Table1 (
id int identity(1, 1) NOT NULL,
Somecolmn varchar (5),
LastChanged [timestamp] NOT NULL)

এটি এমএসকিউএল ২০১২ এর জন্য কাজ করে

INSERT INTO Table1 VALUES('hello',DEFAULT)  
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.