গত 10 দিন তারিখের সাথে রেকর্ড কীভাবে তালিকাভুক্ত করবেন?


109
SELECT Table.date FROM Table WHERE date > current_date - 10;

পোস্টগার্রেএসকিউএল এ কাজ করে?

উত্তর:


199

হ্যাঁ এটি পোস্টগ্রেএসকিউএল-এ কাজ করে (" তারিখ " কলামটি ডেটাটাইপ ধরে ধরে date) আপনি কেন এটি চেষ্টা করেন না?

স্ট্যান্ডার্ড এএনএসআই এসকিউএল ফর্ম্যাটটি হ'ল:

SELECT Table.date 
FROM Table 
WHERE date > current_date - interval '10' day;

আমি সেই ফর্ম্যাটটি পছন্দ করি কারণ এটি পড়া সহজ করে তোলে (তবে এটি একইরকম current_date - 10) same


4
ক্যোয়ারীটি হওয়া উচিত: সারণী থেকে টেবিল নির্বাচন করুন date তারিখের বর্তমান তারিখ> বর্তমান_ তারিখ - বিরতি '10 দিন ';
ব্যবহারকারী2694306

4
@ ব্যবহারকারী2694306: পোস্টগ্রিস interval '10 day'সিনট্যাক্স। interval '10' dayএসকিউএল স্ট্যান্ডার্ডের উপর ভিত্তি করে সিনট্যাক্স এবং
পোস্টগ্র্রেস

4
বিরতি 9 হওয়া উচিত । 10 আসলে আজ থেকে 11 দিন পিছনে আপনাকে দেয়।
ডেভিড তিনি

4
@ ডেভিডহে: এটি মূল উত্তর হিসাবে একই কাজ করে। যা ব্যবহার করে 10, না9
a_horse_with_no_name

4
কেবলমাত্র একটি দ্রষ্টব্য: রেডশিফটে, @ ব্যবহারকারী2694306 এর সূত্রটি কাজ করছে: বিরতি '10 দিন '। বিরতি '10' দিন রেডশিফ্টে কাজ করে না।
বেন

34

http://www.postgresql.org/docs/current/static/funifications-datetime.html অপারেটরদের দেখায় যে আপনি তারিখ এবং সময় (এবং অন্তর) নিয়ে কাজ করার জন্য ব্যবহার করতে পারেন।

তাহলে তুমি চাও

SELECT "date"
FROM "Table"
WHERE "date" > (CURRENT_DATE - INTERVAL '10 days');

উপরের অপারেটরগুলি / ফাংশনগুলি বিস্তারিতভাবে নথিভুক্ত করা হয়:


9

আমার পরীক্ষার (এবং পোস্টগ্রিএসকিউএল ডক্স ) থেকে আমার বোঝাগুলি হ'ল উদ্ধৃতিগুলি অন্যান্য উত্তরগুলির চেয়ে আলাদাভাবে করা দরকার এবং এর মধ্যে "দিন" অন্তর্ভুক্ত করা উচিত:

SELECT Table.date
  FROM Table 
  WHERE date > current_date - interval '10 day';

এখানে প্রদর্শিত (আপনার কোনও পোস্টগ্রিস ডিবিতে এটি চালাতে সক্ষম হওয়া উচিত):

SELECT DISTINCT current_date, 
                current_date - interval '10' day, 
                current_date - interval '10 days' 
  FROM pg_language;

ফলাফল:

2013-03-01  2013-03-01 00:00:00 2013-02-19 00:00:00

আসলে, আমি ব্র্যাডলির উত্তর এটি সঠিক পেয়েছে তা লক্ষ্য করে মিস করেছি। যাইহোক, আমি এখানে সঠিক প্রমাণের জন্য এখানে রেখে দেব। গৃহীত উত্তরটি ভুল (কমপক্ষে পোস্টগ্রির সংস্করণটির জন্য যাচ্ছি আমি)
উচ্চ অনিয়মিত

0

আমি ডাটাটাইপগুলি পরীক্ষা করতাম।

কারেন্ট_ডেটে "তারিখ" ডেটাটাইপ রয়েছে, 10 একটি সংখ্যা এবং টেবিল.ডেট - আপনাকে আপনার টেবিলটি তাকাতে হবে।


0

আপনি এর মধ্যেও ব্যবহার করতে পারেন:

SELECT Table.date
  FROM Table 
  WHERE date between current_date and current_date - interval '10 day';

4
betweenতাই এই সঠিকভাবে যেমন সম্পন্ন করা হবে, প্রথম সর্বনিম্ন মান হতে হয়েছে SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;
টাইপ

0

আপনি যদি বর্তমান তারিখের পরিবর্তে কোনও প্রদত্ত তারিখের সাথে কাজ করতে চান তবে ক্যোয়ারিকে সাধারণীকরণ করুন:

SELECT Table.date
  FROM Table 
  WHERE Table.date > '2020-01-01'::date - interval '10 day'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.