31-DEC-95একটি স্ট্রিং না, হয় না 20-JUN-94। তারা শেষে যুক্ত কিছু অতিরিক্ত স্টাফ সহ নম্বর numbers এটি হতে পারে '31-DEC-95'বা '20-JUN-94'- একক উদ্ধৃতি নোট করুন ',। এটি আপনাকে একটি স্ট্রিং তুলনা করতে সক্ষম করবে।
তবে, আপনি একটি স্ট্রিং তুলনা করছেন না; আপনি একটি তারিখ তুলনা করছেন । আপনার স্ট্রিংকে একটি তারিখে রূপান্তর করা উচিত। হয় অন্তর্নির্মিত TO_DATE()ফাংশন, বা একটি তারিখ আক্ষরিক ব্যবহার করে ।
এখন পর্যন্ত()
select employee_id
from employee
where employee_date_hired > to_date('31-DEC-95','DD-MON-YY')
এই পদ্ধতির কয়েকটি অপ্রয়োজনীয় সমস্যা রয়েছে
- মন্তব্যগুলিতে একটি_ ঘোড়া_বিহীন_নাম_নাম হিসাবে উল্লিখিত
DEC, অগত্যা ডিসেম্বর মানেই হয় না। এটি আপনার NLS_DATE_LANGUAGEএবং NLS_DATE_FORMATসেটিংসের উপর নির্ভর করে । কোনও লোকালে কাজের সাথে আপনার তুলনা আপনি তার পরিবর্তে ডেটটাইম ফর্ম্যাট মডেলটি ব্যবহার করতে পারেন তা নিশ্চিত করতেMM
- '95 বছর অবাস্তব। আপনি জানেন যে আপনি 1995 বোঝাতে চেয়েছিলেন তবে এটি '50, 1950 বা 2050 হলে কী হবে? স্পষ্ট হওয়া সর্বদা সেরা best
select employee_id
from employee
where employee_date_hired > to_date('31-12-1995','DD-MM-YYYY')
তারিখ আক্ষরিক
একটি তারিখের আক্ষরিকতা এএনএসআই স্ট্যান্ডার্ডের একটি অংশ, যার অর্থ আপনার কোনও ওরাকল নির্দিষ্ট ফাংশন ব্যবহার করতে হবে না। আক্ষরিক ব্যবহার করার সময় আপনাকে অবশ্যই ফর্ম্যাটে আপনার তারিখ নির্দিষ্ট করতে হবেYYYY-MM-DD এবং আপনি কোনও সময় উপাদান অন্তর্ভুক্ত করতে পারবেন না।
select employee_id
from employee
where employee_date_hired > date '1995-12-31'
মনে রাখবেন যে ওরাকল তারিখের ডেটাটাইপটিতে একটি সময়ের এলিমেন্ট অন্তর্ভুক্ত রয়েছে, সুতরাং সময় অংশ ছাড়া তারিখ সমান 1995-12-31 00:00:00।
আপনি যদি কোনও সময়ের অংশ অন্তর্ভুক্ত করতে চান তবে আপনাকে একটি টাইমস্ট্যাম্প আক্ষরিক ব্যবহার করতে হবে, যা বিন্যাসটি গ্রহণ করে YYYY-MM-DD HH24:MI:SS[.FF0-9]
select employee_id
from employee
where employee_date_hired > timestamp '1995-12-31 12:31:02'
আরো তথ্য
NLS_DATE_LANGUAGEথেকে প্রাপ্ত NLS_LANGUAGEএবং NLS_DATE_FORMATথেকে প্রাপ্ত NLS_TERRITORY। এগুলি সেট করা হয় যখন আপনি প্রাথমিকভাবে ডাটাবেস তৈরি করেছিলেন তবে সেগুলি আপনার ইনিয়েলাইজেশন পরামিতি ফাইল পরিবর্তন করে পরিবর্তন করা যেতে পারে - কেবলমাত্র যদি প্রয়োজন হয় - বা ALTER SESSIONসিনট্যাক্স ব্যবহার করে সেশন পর্যায়ে । এই ক্ষেত্রে:
alter session set nls_date_format = 'DD.MM.YYYY HH24:MI:SS';
এর অর্থ:
DD মাসের সাংখ্যিক দিন, 1 - 31
MM বছরের সংখ্যাগত মাস, 01 - 12 (জানুয়ারী 01)
YYYY4 ডিজিটের বছর - আমার মতে এটি 2 ডিজিট বছরের চেয়ে সর্বদা ভাল YYকারণ আপনি যে শতাব্দীর কথা উল্লেখ করছেন তাতে কোনও বিভ্রান্তি নেই।
HH24 দিনের ঘন্টা, 0 - 23
MI ঘন্টা মিনিট, 0 - 59
SS মিনিটের দ্বিতীয়, 0-59
আপনি অনুসন্ধানের মাধ্যমে আপনার বর্তমান ভাষা এবং তারিখের ভাষা সেটিংস V$NLS_PARAMETERSsএবং বৈধ মানগুলির সম্পূর্ণ সন্ধানটি জিজ্ঞাসা করে খুঁজে পেতে পারেন V$NLS_VALID_VALUES।
আরও পড়া
ঘটনাক্রমে, আপনি চাইলে আপনার count(*)দ্বারা ভাগ করে নেওয়া উচিতemployee_id
select employee_id, count(*)
from employee
where employee_date_hired > date '1995-12-31'
group by employee_id
এটি আপনাকে প্রতি গণনা দেয় employee_id।
> <বাBETWEEN '' AND ''