1. MySQL NOW() ফাংশনের সংক্ষিপ্ত বিবরণ
MySQL NOW() ফাংশনটি ডাটাবেসের মধ্যে বর্তমান তারিখ ও সময় সহজে পুনরুদ্ধার করতে ব্যবহৃত হয়। NOW() ফাংশন ব্যবহার করে আপনি ডেটা সন্নিবেশের সময় টাইমস্ট্যাম্প পেতে পারেন অথবা লগিংয়ের জন্য দরকারি সময়ের তথ্য পুনরুদ্ধার করতে পারেন। যদিও এটি সহজ, তবু এটি একটি অত্যন্ত শক্তিশালী টুল যা ব্যাপকভাবে ব্যবহৃত হয়।
NOW() ফাংশনের মৌলিক সিনট্যাক্স
NOW() ফাংশনের সিনট্যাক্সটি খুবই সহজ। নিম্নলিখিত কুয়েরি ব্যবহার করে আপনি বর্তমান তারিখ ও সময় পুনরুদ্ধার করতে পারেন।
SELECT NOW();
এক্সিকিউশন ফলাফলটি YYYY-MM-DD HH:MM:SS ফরম্যাটে ফেরত আসে। উদাহরণস্বরূপ, যদি তারিখ ও সময় হয় ২৪ অক্টোবর, ২০২৪, ১৬:৩০, তবে ফলাফলটি নিম্নরূপ হবে।
2024-10-24 16:30:00
NOW() ফাংশনটি ডাটাবেসের টাইম জোনের ভিত্তিতে বর্তমান তারিখ ও সময় ফেরত দেয়। এটি পুরো সিস্টেমে সময় ব্যবস্থাপনাকে সামঞ্জস্যপূর্ণ করে।
NOW() ফাংশনের সাধারণ ব্যবহার ক্ষেত্রসমূহ
NOW() ফাংশনটি নিম্নলিখিত পরিস্থিতিতে বিশেষভাবে উপযোগী।
- Logging : ডেটা পরিবর্তন বা সন্নিবেশের সময় স্বয়ংক্রিয়ভাবে সময় রেকর্ড করে।
- Timestamps : ব্যবহারকারীর ক্রিয়াকলাপের সময় রেকর্ড করতে ব্যবহৃত হয়।
- Time-dependent filtering : নির্দিষ্ট সময়সীমার মধ্যে ঘটিত ডেটা বের করতে।
2. NOW() ফাংশনের মৌলিক ব্যবহার উদাহরণসমূহ
চলুন NOW() ফাংশন ব্যবহার করে বর্তমান তারিখ ও সময় পুনরুদ্ধারের মৌলিক উদাহরণগুলো দেখি।
SELECT NOW();
এই কুয়েরি বর্তমান তারিখ ও সময় ফেরত দেয়। এটি স্ট্রিং হিসেবে পুনরুদ্ধার করার পাশাপাশি সংখ্যাসূচক ফরম্যাটেও পাওয়া যায়। নিম্নলিখিত কুয়েরি ব্যবহার করে বর্তমান তারিখ ও সময় সংখ্যাসূচক ফরম্যাটে (YYYYMMDDHHMMSS) ফেরত আসে।
SELECT NOW() + 0;
উদাহরণস্বরূপ, ফলাফলটি “20241024163000” হিসেবে ফেরত আসতে পারে, যা সংখ্যাসূচকভাবে মানটি পরিচালনা করার সময় সুবিধাজনক।
ভগ্নাংশ সেকেন্ডের নির্ভুলতা নির্ধারণ
NOW() ফাংশন আপনাকে ভগ্নাংশ সেকেন্ডের নির্ভুলতা নির্ধারণের সুযোগ দেয়। নিচের মতো আর্গুমেন্ট ব্যবহার করে নির্ভুলতা সেট করা যায়।
SELECT NOW(3);
এই কুয়েরি মিলিসেকেন্ড নির্ভুলতা (দশমিকের পরে তিনটি অঙ্ক) সহ ফলাফল ফেরত দেয়। উদাহরণস্বরূপ, এটি “2024-10-24 16:30:00.123” এর মতো মান ফেরত দিতে পারে। এই বৈশিষ্ট্যটি সেকেন্ড-স্তরের নির্ভুলতা প্রয়োজনীয় সিস্টেমে অত্যন্ত উপযোগী।
3. SYSDATE() এবং NOW() এর পার্থক্য
NOW() এর মতোই একটি ফাংশন আছে, যার নাম SYSDATE(), তবে এদের আচরণে সামান্য পার্থক্য রয়েছে।
- NOW() : কুয়েরি এক্সিকিউশনের শুরুতে সময় গ্রহণ করে এবং পুরো স্টেটমেন্ট জুড়ে একই মান বজায় রাখে। লেনদেন দীর্ঘ সময় চললেও এটি একই ফলাফল প্রদান করে।
- SYSDATE() : কুয়েরির প্রতিটি ধাপে বর্তমান সময় গ্রহণ করে। অর্থাৎ, দীর্ঘস্থায়ী লেনদেনের সময়ও এটি রিয়েল-টাইম বর্তমান সময় প্রদান করে।
উদাহরণস্বরূপ, দীর্ঘস্থায়ী ব্যাচ প্রক্রিয়ায় SYSDATE() আরও সঠিক রিয়েল-টাইম ফলাফল দিতে পারে। তবে, লেনদেনের সামঞ্জস্যতা গুরুত্বপূর্ণ হলে সাধারণত NOW() সুপারিশ করা হয়।
কোয়েরির মধ্যে পার্থক্য দেখানোর উদাহরণ
নিম্নলিখিত কুয়েরি SYSDATE() এবং NOW() এর আচরণগত পার্থক্য প্রদর্শন করে।
SELECT NOW(), SYSDATE();
ফলাফলটি নিম্নরূপ হতে পারে।
NOW(): 2024-10-24 16:30:00
SYSDATE(): 2024-10-24 16:30:01
কুয়েরি এক্সিকিউটের মুহূর্তে SYSDATE() এ সময়ের পার্থক্য প্রতিফলিত হয়, যেখানে NOW() কুয়েরি এক্সিকিউশন শুরু হওয়ার সময়ের সময় ধরে রাখে। যদিও পার্থক্য সূক্ষ্ম, তবে ব্যবহারিক ক্ষেত্রে উপযুক্ত ফাংশন নির্বাচন করা গুরুত্বপূর্ণ।

4. NOW() ফাংশনের ব্যবহারিক প্রয়োগসমূহ
NOW() ফাংশন নির্দিষ্ট পরিস্থিতিতে খুবই উপযোগী। উদাহরণস্বরূপ, যদি আপনি ডেটা সন্নিবেশের সময় স্বয়ংক্রিয়ভাবে তারিখ ও সময় রেকর্ড করতে চান, তবে নিচের মতো NOW() ফাংশন ব্যবহার করতে পারেন।
INSERT INTO users (username, created_at)
VALUES ('example_user', NOW());
এটি রেকর্ড ইনসার্ট করার সময় created_at কলামে বর্তমান সময় স্বয়ংক্রিয়ভাবে রেকর্ড করে। এই ফিচারটি লগিং এবং ইভেন্ট ট্র্যাকিংয়ের জন্য বিশেষভাবে মূল্যবান।
এছাড়াও, যদি আপনি অতীত সাত দিনের মধ্যে তৈরি করা ডেটা পুনরুদ্ধার করতে চান, তাহলে নিম্নরূপে NOW() ফাংশনটি ব্যবহার করতে পারেন।
SELECT * FROM orders
WHERE order_date >= NOW() - INTERVAL 7 DAY;
এই কোয়েরিটি বর্তমান তারিখ এবং সময় থেকে অতীত সাত দিনের মধ্যে তৈরি করা সকল রেকর্ড পুনরুদ্ধার করে। NOW() ফাংশনটি সময়-নির্ভর ডেটা নিষ্কাশনের জন্য অত্যন্ত কার্যকর।
৫. NOW() ফাংশন ব্যবহার করার সময় গুরুত্বপূর্ণ বিবেচনা
NOW() ফাংশন ব্যবহার করার সময় বিবেচনা করার জন্য কয়েকটি গুরুত্বপূর্ণ পয়েন্ট রয়েছে। বিশেষ করে, এটি ট্রানজ্যাকশনের সামঞ্জস্যতাকে প্রভাবিত করতে পারে, তাই প্রসঙ্গ অনুসারে এটি উপযুক্তভাবে ব্যবহার করা গুরুত্বপূর্ণ।
- ট্রানজ্যাকশনের মধ্যে আচরণ : NOW() ফাংশনটি একটি ট্রানজ্যাকশনের মধ্যে সামঞ্জস্যপূর্ণ ফলাফল ফেরত দেয়, যার অর্থ এটি দীর্ঘস্থায়ী প্রক্রিয়ার সময়ও একই টাইমস্ট্যাম্প ফেরত দেয়। এটি ডেটা সামঞ্জস্য বজায় রাখার জন্য গুরুত্বপূর্ণ। তবে, যদি রিয়েল-টাইম টাইমস্ট্যাম্প প্রয়োজন হয়, তাহলে SYSDATE() ব্যবহার করা আরও উপযুক্ত।
এছাড়াও, NOW() ফাংশনটি টাইম জোন সেটিংয়ের উপর নির্ভর করে, তাই সিস্টেম কনফিগারেশন অনুসারে এটি ভিন্ন ফলাফল ফেরত দিতে পারে। গ্লোবাল অ্যাপ্লিকেশনগুলোতে, টাইম জোন বিবেচনা মাথায় রেখে ডিজাইন করা অপরিহার্য।


