মাইএসকিউএলে তারিখের তুলনা করুন


95

আমি একটি ডাটাবেস থেকে একটি তারিখ তুলনা করতে চান যা 2 প্রদত্ত তারিখের মধ্যে রয়েছে। ডাটাবেস থেকে কলামটি DATETIME, এবং আমি এটি কেবল তারিখ বিন্যাসের সাথে তুলনা করতে চাই, তারিখের সময় বিন্যাস নয়।

SELECT * FROM `players` WHERE CONVERT(CHAR(10),us_reg_date,120) >= '2000-07-05' AND CONVERT(CHAR(10),us_reg_date,120) <= '2011-11-10'

আমি উপরের এসকিউএল সম্পাদন করার সময় আমি এই ত্রুটিটি পেয়েছি:

আপনার এসকিউএল সিনট্যাক্সে আপনার একটি ত্রুটি রয়েছে; 'us_reg_date, 120)> =' 2000-07-05 'এবং কনভার্ট (CHAR (10), us_reg_date, 120) <=' ২০১১- 'এ আপনার মাইএসকিউএল সার্ভার সংস্করণের সাথে সম্পর্কিত ম্যানুয়ালটি পরীক্ষা করুন লাইন 1

এই সমস্যাটি কীভাবে সংশোধন করা যায়?

উত্তর:


95

আপনি কোয়েরি নীচে চেষ্টা করতে পারেন,

select * from players
where 
    us_reg_date between '2000-07-05'
and
    DATE_ADD('2011-11-10',INTERVAL 1 DAY)

39
গুগল থেকে আগত লোকদের জন্য: মাইএসকিএল-তে তারিখের প্রকারটি yyyy-mm-dd ফর্ম্যাটে আসে।
Bżażej মিশালিক

89

তারিখকে স্ট্রিংয়ে রূপান্তর করার জন্য এটি এসকিউএল সার্ভার সিনট্যাক্স । মাইএসকিউএল আপনি ব্যবহার করতে পারেন DATE তারিখে একটি DATETIME থেকে তারিখ বের করে আনতে ফাংশন:

SELECT *
FROM players
WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10'

তবে আপনি যদি কলামটিতে কোনও সূচকের সুবিধা নিতে চান তবে আপনি এটির us_reg_dateপরিবর্তে এটি চেষ্টা করতে পারেন:

SELECT *
FROM players
WHERE us_reg_date >= '2000-07-05'
  AND us_reg_date < '2011-11-10' + interval 1 day

4
আমি সূচকের সুবিধা গ্রহণের বিষয়ে আপনার বিবেচনার প্রশংসা করি। আমি মনে করি ক্যোয়ারির "+ + অন্তর 1 দিন" ধারা থাকা উচিত নয়।
Jurgenfd

10

এটি আমার পক্ষে কাজ করে:

select date_format(date(starttime),'%Y-%m-%d') from data
where date(starttime) >= date '2012-11-02';

'% Y-% m-% d' ফর্ম্যাট স্ট্রিং এবং ইনপুট তারিখের ফর্ম্যাটটি নোট করুন।


6

আমি উত্তর পেয়েছি।

কোডটি এখানে:

SELECT * FROM table
WHERE STR_TO_DATE(column, '%d/%m/%Y')
  BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
    AND STR_TO_DATE('07/10/15', '%d/%m/%Y')

2

এটি আমার পক্ষে এটি কাজ করেছিল:

select * from table
where column
BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
 AND STR_TO_DATE('07/10/15', '%d/%m/%Y')

অনুগ্রহ করে নোট করুন যে আমাকে পূর্ববর্তী সমাধানগুলি থেকে স্ট্রোকউডে (কলাম, '% ডি /% এম /% ওয়াই') পরিবর্তন করতে হয়েছিল, কারণ এটি বয়সগুলি বোঝা হতে গ্রহণ করেছিল

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