চলতি বছরের প্রথম ও শেষ তারিখটি কীভাবে পাবেন?


110

এসকিউএল সার্ভার 2000 ব্যবহার করে, আমি কীভাবে চলতি বছরের প্রথম এবং শেষ তারিখ পেতে পারি?

প্রত্যাশিত আউটপুট:

01/01/2012 এবং 31/12/2012

উত্তর:


237
SELECT
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear

উপরের জিজ্ঞাসাটি 31 ডিসেম্বরের শুরুতে মধ্যরাতের জন্য একটি তারিখের মান দেয় This এটি বছরের শেষ মুহুর্তের প্রায় 24 ঘন্টা কম। আপনি যদি 31 ডিসেম্বর হতে পারে এমন সময়টি অন্তর্ভুক্ত করতে চান তবে আপনার তুলনা করে পরবর্তী বছরের প্রথমটির সাথে <তুলনা করা উচিত। অথবা আপনি চলতি বছরের শেষ কয়েক মিলি সেকেন্ডের সাথে তুলনা করতে পারেন, তবে আপনি যদি ড্যাটটাইম (যেমন DATETIME2) ব্যতীত অন্য কিছু ব্যবহার করে থাকেন তবে এটি একটি ফাঁক ফেলে দেয়:

SELECT
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
   DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear

প্রযুক্তি সম্পর্কিত তথ্য

সঙ্গে 1900 সাল থেকে বছরের গণনায় figuring আউট দ্বারা এই কাজ DATEDIFF(yy, 0, GETDATE())এবং তারপর একটি তারিখ থেকে যে যোগ শূন্য = জানুয়ারী 1, 1900 এই প্রতিস্থাপন একটি অবাধ তারিখ জন্য কাজ পরিবর্তন করা যাবে GETDATE()প্রতিস্থাপন অংশ বা একটি অবাধ বছর DATEDIFF(...)সঙ্গে ফাংশন "বছর - 1900."

 SELECT
   DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
   DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015

13

এখানে মোটামুটি সহজ উপায়;

SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS 'First Day of Current Year';
SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS 'End of Current Year';

এটি সেক্সি নয়, তবে এটি কাজ করে।


1
কেবল এসকিএল সার্ভার 2012 থেকে শুরু হবে
লুকাস

12

ব্যবহার DATEPARTকরে প্রাপ্ত বর্তমান তারিখ থেকে আপনি ফাংশন ব্যবহার করে বর্তমান বছরটি পেতে পারেনgetUTCDate()

SELECT 
    '01/01/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate())), 
    '31/12/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate()))

1
এটি তারিখগুলি নয়, স্ট্রিংগুলি আউটপুট করে। হ্যাঁ, আপনার যা প্রয়োজন তা হ্যাঁ, তবে আপনি যদি ব্যবহার করতে পারেন তবে তারিখগুলি তারিখ হিসাবে রাখুন এবং সেগুলি স্ট্রিং হিসাবে ব্যবহার করবেন না।
জেমি এফ

2
আমি একমত নই, ওপি নির্দিষ্ট করে নি এবং ডেটা ফর্ম্যাটটি এসকিউএল সার্ভারে সেট করা '01 / 01/2012 'এর পরিবর্তে' 2012-01-01 12:13:14 'এর মতো কিছু ফিরে আসতে পারে
র্যান্ডিমারিস

1
@ র্যান্ডি মরিস, সম্মত হন, ওপি জিজ্ঞাসা করছিল যে তিনি DATETIMEস্ট্রিংয়ের পরিবর্তে পেতে পারেন এবং সম্ভবত এটি প্রশ্ন অনুসারে প্রত্যাশিত আউটপুটটির সাথে মেলে না।
ভিকডোর

1
আপনি কেন একটি দ্ব্যর্থক তারিখের ফর্ম্যাট ব্যবহার করবেন (এবং আপনার উত্তরের স্ট্রিংগুলি আপনার মন্তব্যে ফর্ম্যাটের সাথে মেলে না)? yyyyMMddদ্ব্যর্থহীন।
ড্যামিয়েন_এ_বিশ্বাসীরা

1
@ ড্যামিয়েন_সে_ অবিশ্বাস্য, প্রতিক্রিয়াতে ক্যোয়ারীটি প্রশ্ন অনুসারে প্রত্যাশিত আউটপুটটির সাথে মেলে। DATETIME সম্পর্কে মন্তব্যটি স্ট্রিংয়ের পরিবর্তে তারিখ পাওয়ার বিষয়ে ওপির মন্তব্যের প্রতিক্রিয়া। উত্তরটি এই আলোচনার প্রতিফলন করে না।
ভিকডোর

7

কেবল লিখুন:

select convert (date,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0))

বছরের শুরু তারিখ।

select convert (date,DATEADD(YEAR, DATEDIFF(YEAR,0,GETDATE()) + 1, -1))  

4

প্রতি বছর প্রথম তারিখ হিসাবে 1 তম এবং 31 তারিখ হিসাবে শেষ তারিখ হিসাবে আপনি যা করতে চান তা কেবল বছরটিকে সেই দিন এবং মাসের সাথে সংযুক্ত করা হয় উদাহরণস্বরূপ: -

 SELECT '01/01/'+cast(year(getdate()) as varchar(4)) as [First Day],
 '12/31/'+cast(year(getdate()) as varchar(4)) as [Last Day]


এটি কখন কাজ করবে না তার উদাহরণ দিতে পারে?
স্লেয়ারনোহ

@ স্লেয়ারনোহ সার্ভারের স্থানীয়করণের সেটিংসের উপর নির্ভর করে আমার মনে হয় এটি কখনও কখনও ত্রুটি ঘটায়।
জ্যামি এফ

3

বছরের প্রথম এবং শেষ দিনটি পেতে, কেউ এই CONCATফাংশনটি ব্যবহার করতে পারেন । ফলস্বরূপ মানটি যে কোনও প্রকারে ফেলে দেওয়া যেতে পারে।

CONCAT(YEAR(Getdate()),'-01-01') FirstOfYear,
CONCAT(YEAR(GETDATE()),'-12-31') LastOfYear

বছরটি আমার পক্ষে কাজ করে না তবে তারিখ_পর্বটি কাজ শুরু করে_আর_ তারিখ: = কনক্যাট (তারিখ_ পার্ট ('ওয়াই', স্টার্ট_ডেট_পি) :: ইন :: :: পাঠ্য, '- 01-01') :: তারিখ;
বোর্মাট

1

চলতি বছরের শুরু তারিখের জন্য:

SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())

চলতি বছরের শেষ তারিখের জন্য:

SELECT DATEADD(DD,-1,DATEADD(YY,DATEDIFF(YY,0,GETDATE())+1,0))

1

অন্য উপায়: (যেহেতু এসকিউএল সার্ভার ২০১২)

SELECT
    DATEFROMPARTS(YEAR(GETDATE()), 1, 1) FirstDay,
    DATEFROMPARTS(YEAR(GETDATE()),12,31) LastDay

0

এটি দেখুন:

select convert(varchar(12),(DateAdd(month,(Month(getdate())-1) * -1, DateAdd(Day,(Day(getdate())-1) * -1,getdate()))),103) as StartYear,
       convert(varchar(12),DateAdd(month,12 - Month(getdate()), DateAdd(Day,(31 - Day(getdate())),getdate())),103) as EndYear


0
print Cast('1/1/' + cast(datepart(yyyy, getdate()) as nvarchar(4)) as date)

আপনার কোডটি ব্যাখ্যা করা উচিত। কোড ডাম্পগুলি প্রায়শই ডাউনভোট হয় এবং মোছা হতে পারে।
বাগগুলি

0

দেখে মনে হচ্ছে আপনি প্রদত্ত বছরের জন্য সমস্ত কিছু অপারেশন করাতে আগ্রহী, যদি সত্যিই এটি হয় তবে আমি YEAR () ফাংশনটি এভাবে ব্যবহার করার পরামর্শ দেব :

SELECT * FROM `table` WHERE YEAR(date_column) = '2012';

DAY () এবং মাসের () এর ক্ষেত্রেও এটি একই রকম । এগুলি মাইএসকিউএল / মারিয়াডিবি ভেরিয়েন্টগুলির জন্যও উপলব্ধ এবং এসকিউএল সার্ভার ২০০৮ সালে প্রবর্তিত হয়েছিল (সুতরাং নির্দিষ্ট ২০০০-এর জন্য নয়)।


-1
select to_date(substr(sysdate,1, 4) || '01/01'), to_date(substr(sysdate,1, 4) || '12/31') 
from dual

এটি পিএল-এসকিউএল এর জন্য, পোস্টটি এসকিউএল সার্ভার 2000 বলে, তাই আপনাকে টি-এসকিউএল ব্যবহার করতে হবে। টু_ডেট এবং সিসডেট টি-এসকিউএল-তে উপস্থিত নেই
অ্যান্ড্রু ফেলর

-1

মাইক্রোসফ্ট এসকিউএল সার্ভারে (টি-এসকিউএল) নিম্নলিখিত হিসাবে এটি করা যেতে পারে

--beginning of year
select '01/01/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP)))

--end of year
select '12/31/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP)))

CURRENT_TIMESTAMP - ক্যোয়ারি কার্যকর করার সময় স্কেল সার্ভারের তারিখ প্রদান করে।

বছর - বর্তমান সময়ের স্ট্যাম্পের বছরের অংশটি পায়।

STR , LTRIM - এই দুটি ফাংশন যে আমরা একটি varchar আমাদের কাঙ্ক্ষিত প্রেফিক্স সহ concatinated যাবে এই রূপান্তর করতে পারেন, যাতে প্রয়োগ করা হয় (এই ক্ষেত্রে এটা হয় বছরের প্রথম তারিখ বা বছরের শেষ তারিখ)। যেকোন কারণে YEAR ফাংশন দ্বারা উত্পন্ন ফলাফলের উপসর্গের স্থান রয়েছে। তাদের ঠিক করার জন্য আমরা এলটিআরআইএম ফাংশনটি ব্যবহার করি যা ছাঁটা বাকি।


-1

এটি যদি জানুয়ারীর প্রথম দিকে পৌঁছে যায় তবে এটি সম্ভবত শেষ বছরের তারিখ হতে পারে।

select
convert(date, DATEADD(yy, DATEDIFF(yy, 0,  DATEadd(day, -1,getdate())), 0), 103 ) AS StartOfYear,
convert(date, DATEADD(yy, DATEDIFF(yy, 0, DATEDIFF(day, -1,getdate()))+1, -1), 103 )AS EndOfYear

-2

এটা চেষ্টা কর:

DATE_FORMAT(NOW(),'01/01/%Y')
DATE_FORMAT(NOW(),'31/12/%Y')

মাইক্রোসফ্ট এসকিউএল সার্ভার। Msg 195, Level 15, State 10, Line 1 'NOW' is not a recognized function name.
jumxozizi

এই উত্তরটি মাইএসকিউএল ফাংশন ব্যবহার করে (এবং স্ট্রিংয়ের তারিখগুলি কাস্ট করে, যা আমার পোষা প্রাণীর মধ্যে অন্যতম e
vlvaro González

-3

--- লালমুনি ডেমোস ---

create table Users
(
userid int,date_of_birth date
)

--- মান সন্নিবেশ করান ---

insert into Users values(4,'9/10/1991')

select DATEDIFF(year,date_of_birth, getdate()) - (CASE WHEN (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()),date_of_birth)) > getdate() THEN 1 ELSE 0 END) as Years, 
MONTH(getdate() - (DATEADD(year, DATEDIFF(year, date_of_birth, getdate()), date_of_birth))) - 1 as Months, 
DAY(getdate() - (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()), date_of_birth))) - 1 as Days,
from users
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.