এটি বেশ কয়েক বছর পরেও প্রায়শই অতিরিক্ত ভোট সংগ্রহ করা অবিরত করে চলেছে এবং তাই এসকিএল সার্ভারের আধুনিক সংস্করণগুলির জন্য আমার এটি আপডেট করা দরকার। এসকিএল সার্ভার ২০০৮ এবং তার পরে, এটি সহজ:
cast(getDate() As Date)
নোট করুন যে নীচের কাছাকাছি সর্বশেষ তিনটি অনুচ্ছেদ এখনও প্রয়োগ হয় এবং আপনাকে প্রায়শই একধাপ পিছনে ফিরে প্রথমে কাস্ট এড়াতে একটি উপায় খুঁজে বের করতে হবে।
তবে এটি সম্পাদন করার অন্যান্য উপায়ও রয়েছে। এখানে সর্বাধিক সাধারণ।
সঠিক উপায় (SQL সার্ভার ২০০৮ সাল থেকে নতুন):
cast(getdate() As Date)
সঠিক উপায় (পুরানো):
dateadd(dd, datediff(dd,0, getDate()), 0)
এটি এখন বয়স্ক, তবে এটি এখনও জানার মতো কারণ এটি মাসের প্রথম মুহুর্ত, মিনিট, ঘন্টা বা বছরের মতো অন্যান্য সময় পয়েন্টগুলির জন্যও সহজেই খাপ খাইয়ে নিতে পারে।
এই সঠিক উপায়ে নথিভুক্ত ফাংশনগুলি ব্যবহার করা হয় যা আনসী স্ট্যান্ডার্ডের অংশ এবং কাজ করার গ্যারান্টিযুক্ত তবে এটি কিছুটা ধীর হতে পারে। এটি 0 দিন থেকে বর্তমান দিন পর্যন্ত কত দিন রয়েছে তা খুঁজে বের করে এবং অনেক দিন আগের দিন 0 যোগ করে কাজ করে your এটি আপনার ডেটটাইমটি কীভাবে সংরক্ষণ করা হয় এবং আপনার স্থানীয় অবস্থান কী তা বিবেচনা করে তা কার্যকর হবে।
দ্রুত উপায়:
cast(floor(cast(getdate() as float)) as datetime)
এটি কাজ করে কারণ ডেটটাইম কলামগুলি 8-বাইট বাইনারি মান হিসাবে সঞ্চয় করা হয়। ভগ্নাংশটি সরিয়ে ফেলতে তাদের ভাসিয়ে দিন, মেঝে সরানোর জন্য মেঝে করুন এবং মানগুলির সময় অংশ চলে যাবে যখন আপনি সেগুলি ডেটটাইমে ফিরিয়ে দিন। কোনও জটিল যুক্তি ছাড়াই এটি কিছুটা স্থানান্তরিত এবং এটি খুব দ্রুত।
সচেতন থাকুন এটি বাস্তবায়নের বিশদটির উপর নির্ভর করে মাইক্রোসফ্ট যে কোনও সময় পরিবর্তন করতে পারে, এমনকি একটি স্বয়ংক্রিয় পরিষেবা আপডেটে। এটি খুব বহনযোগ্যও নয়। বাস্তবে, এটি খুব শীঘ্রই এই বাস্তবায়ন যে কোনও সময় পরিবর্তিত হবে খুব সম্ভবত, তবে আপনি যদি এটি ব্যবহার করতে চান তবে বিপদ সম্পর্কে সচেতন হওয়া এখনও গুরুত্বপূর্ণ। এবং এখন যেহেতু আমাদের কাছে তারিখ হিসাবে কাস্ট করার বিকল্প রয়েছে, এটি খুব কমই প্রয়োজন।
ভুল পথ:
cast(convert(char(11), getdate(), 113) as datetime)
একটি ভুল স্ট্রিংতে রূপান্তরিত করে, স্ট্রিং কেটে ফেলে এবং ডেটটাইমে ফিরে রূপান্তর করে কাজ করে। এটি ভুল , দুটি কারণে: 1) এটি সমস্ত লোকেল ধরে কাজ করতে পারে না এবং 2) এটি করার সবচেয়ে ধীরতম উপায় সম্পর্কে ... এবং কেবল সামান্য নয়; এটি অন্য বিকল্পগুলির চেয়ে দু'গুণ বেশি মাত্রার ক্রমের মতো।
আপডেট এটি ইদানীং কিছু ভোট পাচ্ছে, এবং তাই আমি এটি যুক্ত করতে চাই যেহেতু আমি এটি পোস্ট করার পরে আমি বেশ কয়েকটি দৃ evidence় প্রমাণ দেখেছি যে এসকিএল সার্ভার "সঠিক" উপায় এবং "দ্রুত" পন্থার মধ্যে পারফরম্যান্স পার্থক্যটিকে অপ্টিমাইজ করবে? , এর অর্থ আপনার এখন প্রাক্তনের পক্ষে হওয়া উচিত।
উভয় ক্ষেত্রেই, আপনি প্রথমে এটি করার প্রয়োজন এড়াতে আপনার প্রশ্নগুলি লিখতে চান । এটি খুব বিরল যে আপনার এই কাজটি ডাটাবেসে করা উচিত।
বেশিরভাগ জায়গায়, ডাটাবেসটি ইতিমধ্যে আপনার বাধা। পারফরম্যান্স উন্নতির জন্য হার্ডওয়্যার যুক্ত করা সবচেয়ে ব্যয়বহুল এবং সেই সংযোজনগুলি সঠিকভাবে পাওয়ার জন্য সবচেয়ে শক্ত এটির সার্ভারটিই সাধারণত (উদাহরণস্বরূপ আপনাকে মেমরির সাথে ডিস্কের ভারসাম্য বজায় রাখতে হবে)। প্রযুক্তিগতভাবে এবং ব্যবসায়িক দিক থেকে এটি বাহ্যিক স্কেল করাও সবচেয়ে কঠিন; কোনও ডাটাবেস সার্ভারের চেয়ে ওয়েব বা অ্যাপ্লিকেশন সার্ভার যুক্ত করা প্রযুক্তিগত দিক থেকে অনেক সহজ এবং আপনি যদি আইআইএস বা অ্যাপাচি-র জন্য সার্ভার লাইসেন্স প্রতি 20,000 ডলার + প্রদান করেন না তা মিথ্যা হলেও were
আমি যে বিষয়টিটি চেষ্টা করার চেষ্টা করছি তা হ'ল যখনই সম্ভব আপনার আবেদন স্তরের এই কাজটি করা উচিত। শুধুমাত্র সময় আপনি কি কখনো হবে নিজেকে SQL সার্ভার উপর একটি DATETIME ছিন্ন যখন আপনি বজায় দিনের বেলায় গ্রুপ করতে হবে, এবং তারপর আপনি সম্ভবত একটি অতিরিক্ত কলামটি একটি কম্পিউটেড কলাম হিসাবে সেট আপ সন্নিবেশ / আপডেট সময়ে বজায় থাকা উচিত, বা অ্যাপ্লিকেশন যুক্তি। এই সূচী-ব্রেকিং, সিপিইউ-ভারী কাজটি আপনার ডাটাবেস থেকে সরিয়ে নিন।