मेरी तालिका में मेरे पास एक महीना (टिनिंट) और एक दिन (टिनिंट) फ़ील्ड है। मैं एक ऐसा कार्य करना चाहता हूं जो इस महीने और दिन लेता है और इस महीने और दिन के बाद अगली तारीख (वर्ष सहित) के लिए डेटाटाइम तैयार करता है।
तो अगर मेरे पास महीना = 9 था, दिन = 7 यह 9/7/2009 का उत्पादन करेगा।
यदि मेरे पास महीना 1 था, दिन 1 यह 1/1/2010 उत्पन्न करेगा।एसक्यूएल: महीने और दिन
उत्तर
कुछ इस तरह काम करेगा एक तिथि देता है। यह आपकी विधि पर भिन्नता है, लेकिन यह एमएम/डीडी/वाई वाई वाईवाई शाब्दिक प्रारूप का उपयोग नहीं करता है, और यह खराब इनपुट (बेहतर या बदतर के लिए) के खिलाफ नहीं होगा।
declare @month tinyint
declare @day tinyint
set @month = 9
set @day = 1
declare @date datetime
-- this could be inlined if desired
set @date = convert(char(4),year(getdate()))+'0101'
set @date = dateadd(month,@month-1,@date)
set @date = dateadd(day,@day-1,@date)
if @date <= getdate()-1
set @date = dateadd(year,1,@date)
select @date
वैकल्पिक रूप से, YYYYMMDD प्रारूप में एक स्ट्रिंग बनाने के लिए:
set @date =
right('0000'+convert(char(4),year(getdate())),4)
+ right('00'+convert(char(2),@month),2)
+ right('00'+convert(char(2),@day),2)
एक अन्य विधि है, जो शाब्दिक सब एक साथ से बचा जाता है:
declare @month tinyint
declare @day tinyint
set @month = 6
set @day = 24
declare @date datetime
declare @today datetime
-- get todays date, stripping out the hours and minutes
-- and save the value for later
set @date = floor(convert(float,getdate()))
set @today = @date
-- add the appropriate number of months and days
set @date = dateadd(month,@month-month(@date),@date)
set @date = dateadd(day,@day-day(@date),@date)
-- increment year by 1 if necessary
if @date < @today set @date = dateadd(year,1,@date)
select @date
यहां तक मेरा एसक्यूएल उदाहरण है। मैं वास्तव में यह पसंद नहीं है, हालांकि ...
DECLARE @month tinyint,
@day tinyint,
@date datetime
SET @month = 1
SET @day = 1
-- SET DATE TO DATE WITH CURRENT YEAR
SET @date = CONVERT(datetime, CONVERT(varchar,@month) + '/' + CONVERT(varchar,@day) + '/' + CONVERT(varchar,YEAR(GETDATE())))
-- IF DATE IS BEFORE TODAY, ADD ANOTHER YEAR
IF (DATEDIFF(DAY, GETDATE(), @date) < 0)
BEGIN
SET @date = DATEADD(YEAR, 1, @date)
END
SELECT @date
दिनांक अक्षर के लिए एमएम/डीडी/वाई वाई वाई प्रारूप का उपयोग न करें। इसके बजाय YYYYMMDD का उपयोग करें। यह स्थानीयकरण के मुद्दों से बच जाएगा, और यह ठीक तरह से ठीक है। –
अन्यथा, मुझे आपकी विधि में कोई समस्या नहीं दिखाई दे रही है। क्या आप एक शाब्दिक से रूपांतरण नापसंद करते हैं? –
ऐसा लगता है कि कुछ आसान समाधान होना चाहिए। –
यहाँ PostgreSQL के साथ एक समाधान है
your_date_calculated = Year * 10000 + Month * 100 + Day
आप की तरह 20090623.
select cast(cast(your_date_calculated as varchar) as date) + 1
यहाँ मेरी संस्करण है। इसके बारे में कोर सिर्फ दो लाइनों, DATEADD
फ़ंक्शन का उपयोग है, और यह तार से करने के लिए/किसी भी रूपांतरण की आवश्यकता नहीं है, तैरता या कुछ और:
DECLARE @Month TINYINT
DECLARE @Day TINYINT
SET @Month = 9
SET @Day = 7
DECLARE @Result DATETIME
SET @Result =
DATEADD(month, ((YEAR(GETDATE()) - 1900) * 12) + @Month - 1, @Day - 1)
IF (@Result < GETDATE())
SET @Result = DATEADD(year, 1, @Result)
SELECT @Result
अच्छा। फ़ंक्शन कॉल ओवरहेड से बचने के लिए इन-लाइन संस्करण के बारे में कैसे? उदाहरण के लिए, दिनांक दिनांक दिनांक (वर्ष, <अभिव्यक्ति यहां>, DATEADD (माह, ((वर्ष (GETDATE()) - 1 9 00) * 12) + महीना फ़ील्ड - 1, डेफिल्ड - 1)) से न्यूडेट के रूप में .... –
- 1. MYSQL: मैं महीने, दिन और वर्ष
- 2. वर्तमान महीने का पहला और अंतिम दिन
- 3. एसक्यूएल सर्वर: कन्वर्ट ((int) साल, (int) महीने, (int) दिन) Datetime
- 4. अगले महीने, उसी दिन PHP
- 5. महीने के अंतिम दिन .NET
- 6. प्राप्त तिथि विवरण (दिन, महीने, साल) GWT
- 7. दिन, महीने, वर्ष से पाइथन टाइमस्टैम्प
- 8. महीने के आखिरी दिन कैसे ढूंढें?
- 9. महीने के आखिरी दिन प्राप्त करें?
- 10. महीने का दिन कैसे प्राप्त करें?
- 11. गिट: एक दिन (या सप्ताह/महीने ...)
- 12. दिन, महीने और वर्ष से एनएसडीएट उत्पन्न करें
- 13. अवरोही तिथि से आदेश - महीने, दिन और वर्ष
- 14. पिछले महीने की पहली और आखिरी दिन की तारीखें सी #
- 15. एसक्यूएल समूह, प्रत्येक दिन
- 16. एसक्यूएल - घंटे की शुरुआत, महीने आदि
- 17. UIDatePicker केवल माह और दिन
- 18. वर्ष, माह और दिन
- 19. महीने, सप्ताह, दिन शीर्षक बार बटन क्लिक के लिए कॉलबैक?
- 20. मैं महीने का उपयोग कर एसक्यूएल रिपोर्टिंग सेवा
- 21. ग्रूवी/Grails तारीख वर्ग - महीने के लिए हो रही दिन
- 22. डेट ऑब्जेक्ट के साथ महीने में सभी दिन खोजें?
- 23. किसी विशिष्ट महीने/वर्ष के महीने का पहला दिन प्राप्त करना
- 24. ओरेकल फ़ंक्शन में पिछले महीने का अंतिम दिन प्राप्त करना
- 25. महीने के दिन में अग्रणी "0" निकालें SimpleDateFormat
- 26. ओरेकल, इसकी महीने की तारीख समय के पहले दिन बनाओ
- 27. मुझे एक महीने का आखिरी दिन कैसे मिल सकता है?
- 28. जेएस तिथि: प्रत्येक दिन या महीने के सामने 0 जोड़ें
- 29. MySQL गिनती और समूह दिन
- 30. jQuery UI DatePicker - महीने के अंतिम दिन को छोड़कर सभी दिन अक्षम करें
आप क्या साल का उपयोग कैसे पता है? क्या आप मानते हैं कि यह हमेशा चालू तारीख से आधारित होगा? इसके अलावा, आप किस डेटाबेस का उपयोग कर रहे हैं? – northpole
यह आज से आधारित है। तो आइए आज 6/23/2009 कहें। तालिका में दिनांक महीना = 6, दिन = 22 है। फिर मैं इसे 6/22/2010 वापस करना चाहता हूं क्योंकि यह अगली तारीख है। –