এসকিউএল সার্ভারে একটি নির্দিষ্ট তারিখের চেয়ে সমস্ত তারিখের চেয়ে কীভাবে আমি জিজ্ঞাসা করব?


338

আমি চেষ্টা করছি:

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;

A.Date দেখতে: 2010-03-04 00:00:00.000

তবে, এটি কাজ করছে না।

কেন কেউ রেফারেন্স দিতে পারে?


17
এটির চারপাশে একক উদ্ধৃতি রাখুন
কেভিন ডিট্রাগলিয়া

2
উক্তিগুলি ছাড়াও, আমি সর্বদা কেবল তারিখের স্ট্রিং আক্ষরিক জন্য একটি নিরাপদ এবং দ্ব্যর্থহীন বিন্যাস ব্যবহার করার পরামর্শ দিই। আমি বিশ্বাস করি কেবলমাত্র YYYYMMDD। যে কারণে ডেভিডের উত্তরে আমার মন্তব্য দেখুন ...
অ্যারন বারট্র্যান্ড

উত্তর:


486
select *  
from dbo.March2010 A 
where A.Date >= Convert(datetime, '2010-04-01' )

আপনার ক্যোয়ারিতে, 2010-4-01একটি গাণিতিক ভাব হিসাবে বিবেচিত হয়, তাই সংক্ষেপে এটি পড়ে

select *  
from dbo.March2010 A 
where A.Date >= 2005; 

( 2010 minus 4 minus 1 is 2005 এটিকে যথাযথে রূপান্তর করা datetimeএবং একক উদ্ধৃতি ব্যবহার করা এই সমস্যাটি সমাধান করবে))

প্রযুক্তিগতভাবে, পার্সারটি আপনাকে এড়িয়ে যেতে পারে

select *  
from dbo.March2010 A 
where A.Date >= '2010-04-01'

এটি আপনার জন্য রূপান্তরটি করবে, তবে আমার মতে এটি DateTimeআপনার পরে আসা রক্ষণাবেক্ষণ প্রোগ্রামারের জন্য পরিষ্কারভাবে রূপান্তরিত হওয়ার চেয়ে কম পঠনযোগ্য ।


37
সুস্পষ্ট রূপান্তর প্রয়োজন হয় না। এছাড়াও আমি YYYY-MM-DD এর পরিবর্তে YYYYMMDD ব্যবহারের পরামর্শ দিচ্ছি। কেন? ভাল, আপনার কোড দিয়ে চেষ্টা করুন SET LANGUAGE FRENCH। :-) এই তারিখের জন্য আপনি এপ্রিল 1 এর পরিবর্তে 4 জানুয়ারী পাবেন। অন্যান্য তারিখের জন্য আপনি পরিবর্তে ত্রুটি পেতে পারেন।
অ্যারন বারট্রান্ড 21

4
@ অ্যারন বার্ট্রেন্ট - আমার জবাবটিতে অন্তর্ভুক্ত ছিল যে "প্রযুক্তিগতভাবে, প্যারেনার আপনাকে <চূড়ান্ত কোড নমুনা> দিয়ে দূরে সরে যেতে দেয় I আমি কেবল এটি আরও পঠনযোগ্য বলে মনে করি, কারণ এটি স্পষ্টতই স্পষ্ট যে এটি একটি তারিখ-সময়। অনেকগুলি ডেটাবেস সিস্টেমগুলি একটি ভার্চারের ক্ষেত্রে তারিখের মানগুলি সঞ্চয় করে তবে আপনি ফর্ম্যাটটি সম্পর্কে সঠিক। সাধারণভাবে, রূপান্তরটি ব্যবহার করার সময় আমি ফর্ম্যাট স্পেসিফায়ারটিতেও যুক্ত করি, তবে আমি আমার নমুনাটি আমার শীর্ষে রেখে যাচ্ছিলাম হেড।
ডেভিড

1
অ্যারোনবার্ট্র্যান্ড, উপরের উত্তরের সাথে আমার আপনার পরামর্শটি ব্যবহার করতে হয়েছিল: CONVERT(datetime, '20100401 10:01:01')- ২০১০-০৪-০১ পাস করা এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে কাজ করে তবে পিএইচপি / এমএসএসকিউএল এর মাধ্যমে এসকিউএল বিবৃতি প্রেরণের সময় নয়।
কাগজপত্র

আমি মনে করি এটি যথেষ্ট স্পষ্ট যে এটি একটি তারিখ, এবং সুতরাং রূপান্তর প্রয়োজন হয় না।
জ্যাক ম্যাথিউ


16

আমরা নীচের মত ব্যবহার করতে পারেন

SELECT * 
FROM dbo.March2010 A
WHERE CAST(A.Date AS Date) >= '2017-03-22';

SELECT * 
    FROM dbo.March2010 A
    WHERE CAST(A.Date AS Datetime) >= '2017-03-22 06:49:53.840';

2
ফিল্টার প্রিকেট কলাম পরিবর্তন করা যাই হোক না কেন এটি ভাল ধারণা নয়। এটি প্রায় সম্পূর্ণরূপে সূচক ব্যবহার প্রতিরোধ করে।
পিমব্রউবার্স

3
DateTime start1 = DateTime.Parse(txtDate.Text);

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= start1;

প্রথমে টেক্সবক্সকে ডেটটাইমে রূপান্তর করুন তারপরে .... সেই পরিবর্তনশীলটিকে কোয়েরিতে ব্যবহার করুন


3

সব মিলিয়ে, সঠিক উত্তরটি হ'ল:

select * from db where Date >= '20100401'  (Format of date yyyymmdd)

এটি অন্যান্য ভাষা সিস্টেমের সাথে কোনও সমস্যা এড়াবে এবং সূচকটি ব্যবহার করবে।

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