এসকিউএল ব্যবহার করে কীভাবে গত 24 ঘন্টা রেকর্ড নির্বাচন করবেন?


184

আমি এমন একটি whereধারা খুঁজছি যা গত 24 ঘন্টা রেকর্ড পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে?


1
এই রেকর্ডগুলিতে আপনার কি টাইমস্ট্যাম্প ক্ষেত্র রয়েছে?
শন স্টুয়ার্ড

উত্তর:


100
SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)

6
যদি রেকর্ডগুলি হিসাবে সংরক্ষণ করা থাকে DATETIMEতবে এটি সময়ের অংশটিকে উপেক্ষা করে পূর্ববর্তী তারিখ থেকে সমস্ত রেকর্ড নির্বাচন করবে। চালানো হয়েছে 23:59:59, ক্যোয়ারী শেষ 48ঘন্টাগুলির জন্য সমস্ত রেকর্ড ফিরিয়ে দেবে , না 24
কাসনসুই

18
যদি আপনি একটি ডেটটাইম ক্ষেত্র থেকে শেষ 24 ঘন্টা নির্বাচন করতে চান, তবে 'এখন ()' এর সাথে 'কুরিট ()' বিকল্প দিন। এর মধ্যে সময়ও অন্তর্ভুক্ত রয়েছে।
হ্যান্টজ

562

ইন MySQL:

SELECT  *
FROM    mytable
WHERE   record_date >= NOW() - INTERVAL 1 DAY

ইন SQL Server:

SELECT  *
FROM    mytable
WHERE   record_date >= DATEADD(day, -1, GETDATE())

ইন Oracle:

SELECT  *
FROM    mytable
WHERE   record_date >= SYSDATE - 1

ইন PostgreSQL:

SELECT  *
FROM    mytable
WHERE   record_date >= NOW() - '1 day'::INTERVAL

ইন Redshift:

SELECT  *
FROM    mytable
WHERE   record_date >= GETDATE() - '1 day'::INTERVAL

ইন SQLite:

SELECT  *
FROM    mytable
WHERE   record_date >= datetime('now','-1 day')

ইন MS Access:

SELECT  *
FROM    mytable
WHERE   record_date >= (Now - 1)

3
আমি মাইএসকিএল-এর জন্য কোয়েরিটি চেষ্টা করে দেখি তবে যদি এটি 2 এএম হয়, উদাহরণস্বরূপ, আমি 00 - 02 এএম থেকে রেকর্ডগুলি পাই। ২৪ ঘন্টার বদলে কেবল ২৪. কোন ধারণা?
মানস

আমি এখানে সরবরাহকৃত সমাধানটি খুব পছন্দ করি, মাইএসকিউএলে আমি যা উল্লেখ করেছি তা হ'ল গিলিয়াম ফ্লেন্ড্রে দ্রবণটির কার্যকারিতা দ্রুত ছিল।
ওয়ালওয়ার্ল্ড

1
আমাজন রেডশিফটে, আমি পাই function getdate() does not exist। এটি দিয়ে প্রতিস্থাপন করা হয়েছে current_dateএবং এটি দুর্দান্ত কাজ করেছে।
ভাসমান

1
এই উত্তরটি আমার এই ইচ্ছাটি বুকমার্ক করতে চাইলে একটি "তারা" বোতাম থাকত makes
ব্রায়ান রিস্ক

1
@ ম্যানোস মাইএসকিউএল এ দেখে মনে হচ্ছে CURDATE()যে কোনও সময়ের অংশের সাথে কোনও তারিখ ফেরায় না, তাই এটি যায় 00NOW()পরিবর্তে ব্যবহার করে এটি স্থির করেছি CURDATE()
ক্যাসেল

21

মাইএসকিউএল:

SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)

ইন্টারভালটি বছর, মাস, দিন, ঘন্টা, মিনিট, দ্বিতীয় সেকেন্ডে থাকতে পারে

উদাহরণস্বরূপ, শেষ 10 মিনিটে

SELECT * 
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)

3
এটি সেই উত্তর যা সুনির্দিষ্ট প্রশ্নের সর্বোত্তম জবাব দেয়: পূর্ববর্তী 24 এর বিপরীতে (বর্তমান মুহুর্ত থেকে) পূর্ববর্তী 24 ঘন্টা (কীভাবে আগের দিনের সমস্ত ফলাফল বোঝায়) তার বিপরীতে কীভাবে ফিরে আসবেন। এটি আমার প্রয়োজনীয়তার উত্তর দিয়েছে, এটি আমার উত্সাহ পেয়েছে। সম্পাদনা: টেবিলের নাম উল্লেখ করা উচিত t
অ্যান্টনি ক্রেগান

8

কোন এসকিউএল নির্দিষ্ট করা হয়নি, এসকিউএল 2005/2008

SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())

আপনি যদি ২০০৮ বর্ধিত নির্ভুলতার তারিখের প্রকারভেদে থাকেন, তবে পরিবর্তে নতুন সিসডেটটাইম () ফাংশনটি ব্যবহার করুন, সমানভাবে যদি ইউটিসি সময় অভ্যন্তরীণভাবে ইউটিসি কলগুলিতে অদলবদল করে।


7

পোস্টগ্রিসে, আপনার ক্ষেত্রের ধরণটি একটি টাইমস্ট্যাম্প অনুমান করে:

টেবিল থেকে * নির্বাচন করুন যেখানে তারিখ_ফিল্ড> (এখন () - বিরতি '24 ঘন্টা ');


4

বিবেচিত টাইমস্ট্যাম্পটি যদি ইউনিক্সের টাইমস্ট্যাম্প হয় তবে আপনাকে প্রথমে ইউনিক্স টাইমস্ট্যাম্প (যেমন 1462567865) মাইএসকিএল টাইমস্ট্যাম্প বা ডেটাতে রূপান্তর করতে হবে

SELECT * FROM `orders` WHERE FROM_UNIXTIME(order_ts) > DATE_SUB(CURDATE(), INTERVAL 1 DAY)

এটি ধরে নেওয়া হচ্ছে যে ইঞ্জিনটি ব্যবহৃত হচ্ছে তা মাইএসকিউএল হিসাবে FROM_UNIXTIME () একটি মাইএসকিউএল ফাংশন। এসকিউএল সার্ভার ব্যবহারের জন্য: আপনার SELECT DATEDIFF(s, '1970-01-01 00:00:00', DateField) যদি এসকিউএল সার্ভার SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', DateField)
২০১ mill


2

হ্যালো আমি এখন এটি মূল পোস্ট থেকে অনেকটা সময় পেরিয়ে গিয়েছি তবে আমি একই ধরণের সমস্যা পেয়েছি এবং আমি ভাগ করতে চাই।

আমি YYYY-MM-DD এইচ: মিমি: এসএস এই ফর্ম্যাটটি সহ একটি ডেটটাইম ফিল্ড পেয়েছি এবং আমি একটি পুরো দিন অ্যাক্সেস করতে চাই, তাই এখানে আমার সমাধান।

মাইএসকিউএলে DATE () ফাংশন: একটি তারিখ বা তারিখের সময় প্রকাশের তারিখের অংশটি বের করুন।

SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'

এটির সাথে আমি এই দিনটিতে সমস্ত সারি রেজিস্টার পেতে পারি।

আমি আশা করি যে কারও সাহায্য করবে।


এটিই কেবলমাত্র আমার জন্য মাইএসকিউএল-এ কাজ করেছিল। কোন কারণে যখন আমি আমার সারণী যেখানে মাইডিট> DATE_SUB ('2018-06-13 00:00:00', ইন্টারভাল 24 ঘন্টা) নির্বাচন করুন; আমি এখনও 2018-06-14 থেকে রেকর্ড পাচ্ছি।
jDub9


1

এসকিউএল সার্ভারে (গত 24 ঘন্টা ধরে):

SELECT  *
FROM    mytable
WHERE   order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()

2
আপনি যখন ইতিমধ্যে শেষ 24 ঘন্টা সন্ধান করছেন তখন সেই প্রশ্নের সন্ধানের মুহুর্তটি তৈরি করতে আপনার কেন "অর্ডার_ডেট <= GETDATE ()" যুক্ত করতে হবে? আপনি যখন "GETDATE" ইতিমধ্যে প্রথমটিতে উল্লেখ করেছেন তখন সেই অংশটির অংশটি আসলেই বোধগম্য নয়। আপনি এটিকে আরও ভাল করে "অর্ডার_ডেট> = তারিখ যোগ করুন (DAY, -1, GETDATE ())" এটির জন্য!
কেএমএক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.