जवाबों:
SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear
उपरोक्त क्वेरी 31 दिसंबर की शुरुआत में मध्यरात्रि के लिए एक डेटटाइम मान देती है। यह वर्ष के अंतिम क्षण से लगभग 24 घंटे कम है। यदि आप 31 दिसंबर को होने वाले समय को शामिल करना चाहते हैं, तो आपको अगले साल की पहली तुलना तुलना के साथ करनी चाहिए <
। या आप वर्तमान वर्ष के अंतिम कुछ मिलीसेकेंड से तुलना कर सकते हैं, लेकिन यह अभी भी एक अंतर छोड़ देता है यदि आप DATETIME के अलावा कुछ का उपयोग कर रहे हैं (जैसे 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 के बाद के वर्षों की संख्या का पता 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
आप DATEPART
फ़ंक्शन का उपयोग करके वर्तमान वर्ष प्राप्त कर सकते हैं , वर्तमान तिथि का उपयोग करके प्राप्त कर सकते हैंgetUTCDate()
SELECT
'01/01/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate())),
'31/12/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate()))
DATETIME
स्ट्रिंग के बजाय प्राप्त कर सकता है और जाहिर है कि सवाल के अनुसार अपेक्षित आउटपुट से मेल नहीं खा सकता है।
yyyyMMdd
असंदिग्ध है।
बस लिखें: -
select convert (date,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0))
वर्ष की आरंभ तिथि।
select convert (date,DATEADD(YEAR, DATEDIFF(YEAR,0,GETDATE()) + 1, -1))
प्रत्येक वर्ष में पहली तारीख के रूप में 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]
वर्ष का पहला और अंतिम दिन प्राप्त करने के लिए, कोई CONCAT
फ़ंक्शन का उपयोग कर सकता है । परिणामी मूल्य किसी भी प्रकार का हो सकता है।
CONCAT(YEAR(Getdate()),'-01-01') FirstOfYear,
CONCAT(YEAR(GETDATE()),'-12-31') LastOfYear
वर्तमान वर्ष की शुरुआत की तारीख के लिए:
SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())
वर्तमान वर्ष की अंतिम तिथि के लिए:
SELECT DATEADD(DD,-1,DATEADD(YY,DATEDIFF(YY,0,GETDATE())+1,0))
दूसरा तरीका: (SQL सर्वर 2012 के बाद से)
SELECT
DATEFROMPARTS(YEAR(GETDATE()), 1, 1) FirstDay,
DATEFROMPARTS(YEAR(GETDATE()),12,31) LastDay
इसे देखें:
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
SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())
print Cast('1/1/' + cast(datepart(yyyy, getdate()) as nvarchar(4)) as date)
ऐसा लगता है कि आप दिए गए वर्ष के लिए सब कुछ एक ऑपरेशन करने में दिलचस्प हैं, अगर यह वास्तव में मामला है, तो मैं इस तरह YEAR () फ़ंक्शन का उपयोग करने की सिफारिश करूंगा :
SELECT * FROM `table` WHERE YEAR(date_column) = '2012';
वही DAY () और MONTH () के लिए जाता है । वे MySQL / MariaDB वेरिएंट के लिए भी उपलब्ध हैं और इसे SQL Server 2008 में प्रस्तुत किया गया था (इसलिए विशिष्ट 2000 के लिए नहीं)।
select to_date(substr(sysdate,1, 4) || '01/01'), to_date(substr(sysdate,1, 4) || '12/31')
from dual
Microsoft SQL सर्वर (T-SQL) में यह निम्नानुसार किया जा सकता है
--beginning of year
select '01/01/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP)))
--end of year
select '12/31/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP)))
CURRENT_TIMESTAMP - क्वेरी के निष्पादन के समय sql सर्वर दिनांक देता है।
YEAR - वर्तमान समय की मुहर का वर्ष भाग प्राप्त करता है।
एसटीआर , एलटीआरआईएम - इन दो कार्यों को लागू किया जाता है ताकि हम इसे एक ऐसे चरचर में परिवर्तित कर सकें जिसे हमारे वांछित उपसर्ग के साथ समाहित किया जा सके (इस मामले में यह वर्ष की पहली तारीख या वर्ष की अंतिम तिथि है)। जो भी कारण YEAR फ़ंक्शन द्वारा उत्पन्न परिणाम के लिए पूर्वसर्ग स्थान है। उन्हें ठीक करने के लिए हम LTRIM फ़ंक्शन का उपयोग करते हैं जिसे ट्रिम छोड़ दिया जाता है।
यदि यह 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
इसे इस्तेमाल करे:
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.
--- लालमुनी दानव ---
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