উত্তর:
আপনার সেই দুটি তারিখের মত একক উদ্ধৃতিগুলির মধ্যে রাখা উচিত ..
select Date, TotalAllowance from Calculation where EmployeeId = 1
and Date between '2011/02/25' and '2011/02/27'
বা ব্যবহার করতে পারেন
select Date, TotalAllowance from Calculation where EmployeeId = 1
and Date >= '2011/02/25' and Date <= '2011/02/27'
মনে রাখবেন যে প্রথম তারিখটি অন্তর্ভুক্ত, তবে দ্বিতীয়টি একচেটিয়া, কারণ এটি কার্যকরভাবে '2011/02/27 00:00:00'
between
কাজ করে না থাকেন তবে প্রত্যাশা অনুযায়ী কাজ করা উচিত।
যেহেতু একটি নির্দিষ্ট সময়ের বিভাগ ব্যতীত একটি ডেটটাইমের মান থাকবে date 00:00:00.000
, আপনি যদি নিজের সীমাতে সমস্ত তারিখ পেয়েছেন তা নিশ্চিত করতে চান, আপনাকে অবশ্যই আপনার শেষের তারিখের জন্য সময় সরবরাহ করতে হবে বা আপনার শেষের তারিখ বাড়াতে হবে এবং ব্যবহার করতে হবে <
।
select Date,TotalAllowance from Calculation where EmployeeId=1
and Date between '2011/02/25' and '2011/02/27 23:59:59.999'
অথবা
select Date,TotalAllowance from Calculation where EmployeeId=1
and Date >= '2011/02/25' and Date < '2011/02/28'
অথবা
select Date,TotalAllowance from Calculation where EmployeeId=1
and Date >= '2011/02/25' and Date <= '2011/02/27 23:59:59.999'
নিম্নলিখিতগুলি ব্যবহার করবেন না, কারণ এটির সময়গুলি 00: 00: 00.000 হলে 2011/02/28 থেকে কিছু রেকর্ড ফিরে আসতে পারে।
select Date,TotalAllowance from Calculation where EmployeeId=1
and Date between '2011/02/25' and '2011/02/28'
'2011/02/28 00:00:00.000'
?
convert(date, Date) between '2011/02/25' and '2011/02/27'
(কমপক্ষে সাম্প্রতিক কোনও এসএসকিউএল সার্ভার সহ)। convert()
খন্ডকালীন অংশ stripping যত্ন নিতে হবে এবং তুলনা মধ্যে তারপর আশানুরূপ কাজ হবে।
এটা চেষ্টা কর:
select Date,TotalAllowance from Calculation where EmployeeId=1
and [Date] between '2011/02/25' and '2011/02/27'
তারিখের মানগুলি স্ট্রিং হিসাবে টাইপ করা দরকার।
এসকিউএল সার্ভার ২০০৮ এবং এর চেয়ে উচ্চতর ক্ষেত্রে আপনার প্রশ্নের ভবিষ্যত-প্রমাণ করার জন্য, এড়ানো Date
উচিত কারণ এটি পরবর্তী সংস্করণগুলিতে একটি সংরক্ষিত শব্দ।
মনে রাখবেন যে সময় ব্যতীত তারিখগুলি মধ্যরাতকে তাদের ডিফল্ট হিসাবে গ্রহণ করে, সুতরাং সেখানে আপনার সঠিক মূল্য নাও থাকতে পারে।
select * from table_name where col_Date between '2011/02/25'
AND DATEADD(s,-1,DATEADD(d,1,'2011/02/27'))
এখানে, বর্তমানের শেষ তারিখটিতে প্রথমে একটি দিন যুক্ত করুন, এটি হবে 2011-02-28 00:00:00
, তারপরে আপনি শেষের তারিখটি তৈরি করতে এক সেকেন্ডটি বিয়োগ করুন 2011-02-27 23:59:59
। এটি করে আপনি প্রদত্ত বিরতিগুলির মধ্যে সমস্ত তারিখ পেতে পারেন।
output:
2011/02/25
2011/02/26
2011/02/27
select * from test
where CAST(AddTime as datetime) between '2013/4/4' and '2014/4/4'
- যদি ডেটা টাইপ আলাদা হয়
এই কোয়েরিটি বর্তমান তারিখ এবং এর পরবর্তী 3 তারিখের মধ্যে মানগুলি আনতে ভাল
SELECT * FROM tableName WHERE columName
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 DAY)
এটি শেষ পর্যন্ত বর্তমান তারিখে অতিরিক্ত 3 দিনের বাফার যুক্ত করবে।
এটি অনেক পুরানো, তবে তারিখগুলির সাথে আমার অনেক অভিজ্ঞতা দেওয়া হয়েছে, আপনি এটি বিবেচনা করতে পারেন: লোকে বিভিন্ন আঞ্চলিক সেটিংস ব্যবহার করে, যেমন, কিছু লোক (এবং কিছু ডাটাবেস / কম্পিউটারগুলি আঞ্চলিক সেটিংসের উপর নির্ভর করে) এটি পড়তে পারে 11/12/2016 তারিখ 11 ডিসেম্বর 2016 বা 12 নভেম্বর, 2016. আরও বেশি, মাইএসকিউএল ডাটাবেসে সরবরাহিত 16/11/12 অভ্যন্তরীণভাবে 12 নভেম্বর 2016 তে রূপান্তরিত হবে, যখন যুক্তরাজ্যের আঞ্চলিক সেটিং কম্পিউটারে চলমান অ্যাক্সেস ডাটাবেস ব্যাখ্যা করবে এবং এটি 16 নভেম্বর 2012 হিসাবে সংরক্ষণ করুন।
অতএব, আমি যখনই তারিখ এবং ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করতে যাচ্ছি তখন আমি এটিকে আমার নীতিটি স্পষ্ট করে তুলেছি। সুতরাং আমি সর্বদা আমার জিজ্ঞাসা এবং প্রোগ্রামিং কোডগুলি নীচে সরবরাহ করি:
SELECT FirstName FROM Students WHERE DoB >= '11 Dec 2016';
আরও মনে রাখবেন যে অ্যাক্সেস এইভাবে # টি গ্রহণ করবে:
SELECT FirstName FROM Students WHERE DoB >= #11 Dec 2016#;
তবে এমএস এসকিউএল সার্ভারটি করবে না, তাই আমি সবসময় উপরে "" "ব্যবহার করি যা উভয় ডাটাবেসই গ্রহণ করে।
এবং কোডটিতে কোনও চলক থেকে সেই তারিখটি পাওয়ার পরে, আমি সর্বদা ফলাফলকে স্ট্রিংয়ে নিম্নরূপে রূপান্তর করি:
"SELECT FirstName FROM Students WHERE DoB >= " & myDate.ToString("d MMM yyyy")
আমি এটি লিখছি কারণ আমি জানি কখনও কখনও কিছু প্রোগ্রামার অন্তর্নিহিত রূপান্তর সনাক্ত করতে যথেষ্ট আগ্রহী নাও হতে পারে। <13 তারিখের জন্য কোনও ত্রুটি থাকবে না, কেবল ভিন্ন ফলাফল!
প্রশ্ন করা প্রশ্ন হিসাবে, শেষ তারিখে একদিন যুক্ত করুন এবং তুলনাটি নিম্নরূপ করুন:
dated >= '11 Nov 2016' AND dated < '15 Nov 2016'
উদাহরণস্বরূপ # # এর মধ্যে তারিখগুলি রাখার চেষ্টা করুন
#2013/4/4# and #2013/4/20#
এটা আমার জন্য কাজ করেছে।
এটির তারিখ যদি 24 ঘন্টা হয় এবং সকালে শুরু হয় এবং রাতে শেষ হয় তবে এর মতো কিছু যুক্ত করা উচিত:
declare @Approval_date datetime
set @Approval_date =getdate()
Approval_date between @Approval_date +' 00:00:00.000' and @Approval_date +' 23:59:59.999'
বর্তমান তারিখ এবং তিন দিনের মধ্যে নির্বাচনের তারিখের জন্য সেরা ক্যোয়ারী :
select Date,TotalAllowance from Calculation where EmployeeId=1 and Date BETWEEN
DATE_SUB(CURDATE(), INTERVAL 3 DAY) AND CURDATE()
বর্তমান তারিখ এবং পরবর্তী তিন দিনের মধ্যে নির্বাচনের তারিখের জন্য সেরা কোয়েরি :
select Date,TotalAllowance from Calculation where EmployeeId=1 and Date BETWEEN
CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 DAY)
নীচের উদাহরণগুলি দেখুন: উভয় কর্মক্ষম এবং অ-কার্যকরী।
select * from tblUser Where
convert(varchar(10),CreatedDate,111) between '2015/04/01' and '2016/04/01' //--**Working**
অথবা
select * from tblUser Where
(CAST(CreatedDate AS DATETIME) between CAST('2015/04/01' AS DATETIME) And CAST('2016/4/30'AS DATETIME)) //--**Working**
অথবা
select * from tblUser Where
(YEAR(CreatedDate) between YEAR('2015/04/01') And YEAR('2016/4/30'))
//--**Working**
এবং নীচে কাজ করছে না:
select * from tblUser Where
Convert(Varchar(10),CreatedDate,111) >= Convert(Varchar(10),'01-01-2015',111) and Convert(Varchar(10),CreatedDate,111) <= Convert(Varchar(10),'31-12-2015',111) //--**Not Working**
select * from tblUser Where
(Convert(Varchar(10),CreatedDate,111) between Convert(Varchar(10),'01-01-2015',111) And Convert(Varchar(10),'31-12-2015',111)) //--**Not Working**
আমরা দুটি তারিখের ডেটা দেখানোর জন্য ব্যবহার করতে পারি তবে এটি পুরো ডেটা অনুসন্ধান করবে এবং তুলনা করবে যাতে এটি বিশাল ডেটার জন্য আমাদের প্রক্রিয়াটি ধীর করে দেয়, তাই আমি সবাইকে ব্যবহার করার পরামর্শ দিচ্ছি datediff
:
qry = "SELECT * FROM [calender] WHERE datediff(day,'" & dt & "',[date])>=0 and datediff(day,'" & dt2 & "',[date])<=0 "
এখানে ক্যালেন্ডার হ'ল সারণী, সূচনা তারিখের পরিবর্তনশীল হিসাবে dt এবং dt2 সমাপ্তি তারিখের পরিবর্তনশীল।
আমি যেতে হবে
select Date,TotalAllowance from Calculation where EmployeeId=1
and Date >= '2011/02/25' and Date < DATEADD(d, 1, '2011/02/27')
যুক্তি সত্তা যাতে >=
সম্পূর্ণ শুরুর তারিখ <
অন্তর্ভুক্ত থাকে এবং শেষের তারিখটি বাদ দেয় তাই আমরা শেষের তারিখে একটি ইউনিট যুক্ত করি। এটি কয়েক মাস ধরে খাপ খাইয়ে নিতে পারে, উদাহরণস্বরূপ:
select Date, ... from ...
where Date >= $start_month_day_1 and Date < DATEADD(m, 1, $end_month_day_1)
সত্যই ফলাফলের জন্য সমস্ত বর্গাকার তারিখগুলি yyyy-MM-dd ফর্ম্যাটে হওয়া উচিত।
/****** Script for SelectTopNRows command from SSMS ******/
SELECT TOP 10 [Id]
,[Id_parvandeh]
,[FirstName]
,[LastName]
,[RegDate]
,[Gilder]
,[Nationality]
,[Educ]
,[PhoneNumber]
,[DueInMashhad]
,[EzdevajDate]
,[MarriageStatus]
,[Gender]
,[Photo]
,[ModifiedOn]
,[CreatorIp]
From
[dbo].[Socials] where educ >= 3 or EzdevajDate >= '1992/03/31' and EzdevajDate <= '2019/03/09' and MarriageStatus = 1
এটি ভাল এইভাবে লিখুন:
CREATE PROCEDURE dbo.Get_Data_By_Dates
(
@EmployeeId INT = 1,
@Start_Date DATE,
@End_Date Date
)
AS
Select * FROM Calculation
where EmployeeId=@EmployeeId AND Test_Date BETWEEN @Start_Date AND @End_Date
RETURN
SELECT Date, TotalAllowance
FROM Calculation
WHERE EmployeeId = 1
AND Date BETWEEN to_date('2011/02/25','yyyy-mm-dd')
AND to_date ('2011/02/27','yyyy-mm-dd');