2012-10-06 11 views
11

मैं 2012-10-06 02 उसके डिफ़ॉल्ट से एक datetime (createTime) क्षेत्र परिवर्तित करने के लिए कोशिश कर रहा हूँ:/बजे हूँ करने के लिए 37.243 प्रारूप तो मैं का उपयोगएसक्यूएल परिवर्तित datetime और घटाना घंटे

convert(varchar, CreateTime, 100) as CreateTime 

और मिलती है: 29 अक्टूबर 6 2012 4:29 पूर्वाह्न

अभी तक इतना अच्छा है लेकिन उसी कथन में मैं 4 घंटे घटाना चाहता हूं और फिर फ़ील्ड (जीएमटी मुद्दों) को प्रदर्शित करना चाहता हूं।

मैं यहां कुछ पोस्ट के माध्यम से गया हूं लेकिन कुछ भी नहीं मिला जो इसे एकल कथन में कर सकता है।

उत्तर

21
declare @createTime datetime = '2012-10-06 02:29:37.243'; 

-- original value, default formatting 
select @createTime; 

-- formatted 
select convert(varchar, @createTime, 100); 

-- subtract 4 hours, formatted 
select convert(varchar, dateadd(hour, -4, @createTime), 100); 

कि इसके बाद के संस्करण क्वेरी का उपयोग करता dateadd हमेशा 4 घंटे घटा देंगे। यदि आपका लक्ष्य यूटीसी से स्थानीय समय में मनमाने ढंग से डेटाटाइम को परिवर्तित करना है, तो यह अधिक जटिल है क्योंकि आपको ऑफसेट को जोड़ने/घटाने की आवश्यकता मूल डेटाटाइम पर निर्भर करती है। एक मूल्य जैसे -4 हमेशा काम नहीं करेगा। यहाँ सामान्य स्थिति से निपटने के लिए कुछ विचार कर रहे हैं:

Effectively Converting dates between UTC and Local (ie. PST) time in SQL 2005

+0

धन्यवाद, चयन परिवर्तित (varchar, DATEADD (घंटा, -4, @ createTime), 100); चाल है – bobsingh1

-1

एसक्यूएल सर्वर के लिए आप datetimeoffset

mysql उपयोग के लिए इस्तेमाल कर सकते हैं CONVERT_TZ समारोह एक अलग timeszone कन्वर्ट करने के लिए।

0

पीपुल हू दिनों घटाना चाहता है और घंटे के लिए

declare @createTime datetime = '2012-10-06 02:29:37.243'; 
select @createtime as originaltime, dateadd(day, -4, dateadd(hour,-1,@createtime))as minus4daysandhour 
संबंधित मुद्दे