2011-11-14 13 views
65

के रूप में परिवर्तित करने के लिए कैसे करें SQL सर्वर 'Nov 14 2011 03:12:12:947PM' जैसे टाइमस्टैंप देता है, क्या 'वाई-एम-डी एच: आई: एस' जैसे स्ट्रिंग टू डेट प्रारूप को बदलने का कोई आसान तरीका है।SQL सर्वर के टाइमस्टैम्प कॉलम को डेटाटाइम प्रारूप

अब तक मैं उपयोग

date('Y-m-d H:i:s',strtotime('Nov 14 2011 03:12:12:947PM')) 

उत्तर

185

एसक्यूएल सर्वर के TIMESTAMP डेटाप्रकार कुछ भी नहीं एक तारीख और समय के साथ क्या करना है!

यह लगातार संख्या का एक द्विआधारी प्रतिनिधित्व है - यह सुनिश्चित करने के लिए केवल एक अच्छा है कि इसे पढ़ने के बाद से कोई पंक्ति नहीं बदली है।

SQL सर्वर के नए संस्करणों में, इसे RowVersion कहा जा रहा है - क्योंकि यह वास्तव में यह है। देखें MSDN docs on ROWVERSION:

एक डेटा प्रकार है कि एक डेटाबेस के भीतर स्वचालित रूप से उत्पन्न, अद्वितीय द्विआधारी संख्या को उजागर करता है। पंक्ति-वर्जन आमतौर पर संस्करण-मुद्रांकन तालिका पंक्तियों के लिए एक तंत्र के रूप में उपयोग किया जाता है। पंक्तिवर्ती डेटा प्रकार केवल एक वृद्धि संख्या है और कोई दिनांक या समय संरक्षित नहीं करता है। दिनांक या समय रिकॉर्ड करने के लिए, डेटाटाइम 2 डेटा प्रकार का उपयोग करें।

तो तुम दिनांक/समय के लिए एक एसक्यूएल सर्वर TIMESTAMP परिवर्तित नहीं कर सकते हैं - यह सिर्फ एक दिनांक/समय नहीं है।

लेकिन यदि आप टाइमस्टैंप कह रहे हैं लेकिन वास्तव में आपका मतलब DATETIME कॉलम है - तो आप एमएसडीएन सहायता में CAST and CONVERT विषय में वर्णित उन वैध दिनांक स्वरूपों का उपयोग कर सकते हैं। जिन्हें SQL सर्वर द्वारा "बॉक्स से बाहर" परिभाषित और समर्थित किया गया है। कुछ और समर्थित नहीं है, उदा। आपको बहुत सारे मैन्युअल कास्टिंग और कॉन्सटेनेटिंग (अनुशंसित नहीं) करना है।

DECLARE @today DATETIME = SYSDATETIME() 

SELECT CONVERT(VARCHAR(50), @today, 121) 

देता है::

2011-11-14 10:29:00.470 

SQL Server 2012 will finally have a FORMAT function कस्टम स्वरूपण करने के लिए ...

प्रारूप आप देख रहे हैं विहित (शैली = 121) ODBC की तरह एक सा लग रहा है ...

+1

शायद SQL सर्वर के साथ मेरी सबसे बड़ी आस्तीन। अगर मैं इसके साथ समय नहीं बता सकता तो इसे टाइमस्टैम्प क्यों कहते हैं? – BelgoCanadian

+0

@ बेल्गो कानाडियन: Sybase से पूछें - यह एक सुविधा है जो हमेशा के लिए Sybase/SQL सर्वर में रही है ..... –

2

मेरे सहकर्मियों ने मुझे इसके साथ मदद की:

select CONVERT(VARCHAR(10), <tms_column>, 112), count(*) 
from table where <tms_column> > '2012-09-10' 
group by CONVERT(VARCHAR(10), <tms_column>, 112); 

या

select CONVERT(DATE, <tms_column>, 112), count(*) 
from table where <tms_column> > '2012-09-10' 
group by CONVERT(DATE, <tms_column>, 112); 
3

वर्क्स ठीक, इस संदेश को छोड़कर:

टाइमस्टैम्प के डेटा प्रकार varchar से अंतर्निहित रूपांतरण अनुमति नहीं है। इस क्वेरी

तो हाँ, TIMESTAMP (RowVersion) नहीं एक, DATE :)

ईमानदारी से कहूं तो मैं चारों ओर कुछ समय अपने आप को एक तरह से करने के लिए इसे परिवर्तित करने के लिए खोजने के लिए fidddled है चलाने में बदलने फ़ंक्शन का उपयोग करें एक तिथि।

सर्वोत्तम तरीका इसे आईएनटी में परिवर्तित करना और तुलना करना है। यह बात है कि इस प्रकार का क्या मतलब है। आप एक तारीख चाहते हैं - बस एक Datetime पंक्ति जोड़ सकते हैं और बाद कभी :)

चियर्स मैक happyly रहते

0

FROM_UNIXTIME (unix_timestamp, प्रारूप)

+10

क्योंकि यह प्रश्न माइक्रोसॉफ्ट के एसक्यूएल को संदर्भित करता है, न कि MySQL। –

2

उनमें से कुछ वास्तव में एक करने के लिए गुप्त करता है की कोशिश क्यों नहीं से दिनांक-समय SQL सर्वर 2008 आगे।

निम्नलिखित SQL क्वेरी की कोशिश करो और आप खुद के लिए देखेंगे: 51:: 03:

select CAST (0x00009CEF00A25634 as datetime) 

ऊपर में 2009-12-30 09 परिणाम होगा 000, लेकिन मैं जो कि वास्तव में नहीं है का सामना करना पड़ा एक तिथि के लिए मानचित्र।

5

आप एक टाइमस्टैम्प क्षेत्र से तारीख प्राप्त कर सकते हैं डाली का उपयोग करना: अगर मैंने कुछ यहाँ याद कर रहा हूँ

SELECT CAST(timestamp_field AS DATE) FROM tbl_name 
+2

यह काम नहीं कर रहा है: 'डेटा प्रकार टाइमस्टैंप से आज तक स्पष्ट रूपांतरण की अनुमति नहीं है। – jocull

-2

सुनिश्चित नहीं हैं, लेकिन आप सिर्फ इस तरह टाइमस्टैम्प परिवर्तित नहीं कर सकते:

CONVERT(VARCHAR,CAST(ZEIT AS DATETIME), 110) 
+0

क्या आपने इसे आजमाया? TIMESTAMP का कोई संबंध DATE से नहीं है। –

+0

मैं इसका उपयोग SQL सर्वर 2008 – Daniel

2

ऐसा करने का सबसे आसान तरीका यह है:

SELECT id,name,FROM_UNIXTIME(registration_date) FROM `tbl_registration`; 

यह दिनांक कॉलम को कम से कम एक पठनीय प्रारूप में देता है । आगे यदि आप टी प्रारूप को बदलना चाहते हैं तो here पर क्लिक करें।

+0

पर कर रहा हूं एसक्यूएल के पुराने संस्करणों के लिए नहीं लगता है? मैं इसे एसक्यूएल 2014 के साथ नहीं ढूंढ सकता .. – pungggi

संबंधित मुद्दे