Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

डेटाटाइम के लिए एसएसआईएस स्रोत प्रारूप निहित रूपांतरण

सामान्य जानकारी

ये डेटाटाइम्स डेटाटाइप्स के डिफ़ॉल्ट प्रारूप हैं (स्ट्रिंग से कनवर्ट करते समय)

DT_DBDATE
yyyy-mm-dd

DT_FILETIME
yyyy-mm-dd hh:mm:ss:fff

DT_DBTIME
hh:mm:ss

DT_DBTIME2
hh:mm:ss[.fffffff]

DT_DBTIMESTAMP
yyyy-mm-dd hh:mm:ss[.fff]

DT_DBTIMESTAMP2
yyyy-mm-dd hh:mm:ss[.fffffff]

DT_DBTIMESTAMPOFFSET
yyyy-mm-dd hh:mm:ss[.fffffff] [{+|-} hh:mm]

नोट:DT_DATE और DT_DBTIMESTAMP की SET विधि समान है

और मुझे लगता है कि स्ट्रिंग को आज तक कनवर्ट करना आपकी वर्तमान संस्कृति जानकारी पर भी निर्भर करता है

अधिक विस्तृत जानकारी यहाँ पाई जाती है

  • एकीकरण सेवाएं डेटा प्रकार
  • SSIS से SQL सर्वर डेटा प्रकार अनुवाद

प्रयोग :

आपकी टिप्पणी पढ़ने के बाद मुझे आपके प्रश्न से संबंधित कोई लेख नहीं मिला इसलिए मैंने निम्नलिखित प्रयोग किए:

एसएसआईएस निहित डेटाटाइम रूपांतरण

मैंने डेटाफ्लोटास्क के साथ एक एसएसआईएस पैकेज बनाया है। इस डेटाफ्लोटास्क में मैंने एक स्क्रिप्ट घटक (स्रोत के रूप में) और एक फ्लैट फ़ाइल गंतव्य बनाया है। स्क्रिप्ट में एक आउटपुट कॉलम होता है OutDate प्रकार का DT_DbTimeStamp स्क्रिप्ट के अंदर मैंने निम्नलिखित कोड का उपयोग किया है:

Private dtDate As Date = #01/01/2016#

Public Overrides Sub CreateNewOutputRows()

    Output0Buffer.AddRow()


    Using sw As New IO.StreamWriter("D:\Result.txt", False)
        sw.WriteLine("CultureInfo;Date;Format;Accepted")
        sw.Close()
    End Using


    For Each ci As System.Globalization.CultureInfo In System.Globalization.CultureInfo.GetCultures(Globalization.CultureTypes.AllCultures)

        For Each strFormat As String In ci.DateTimeFormat.GetAllDateTimePatterns

            Dim boolResult As Boolean = True
            Try


                Output0Buffer.OutDate = dtDate.ToString(strFormat)

                boolResult = True

            Catch ex As Exception

                boolResult = False



            End Try

            Using sw As New IO.StreamWriter("D:\Result.txt", True)
                sw.WriteLine(ci.Name & ";" & dtDate.ToString(strFormat) & ";" & strFormat & ";" & boolResult.ToString)
                sw.Close()
            End Using

        Next



    Next



End Sub

सबसे पहले मैं सभी संस्कृति जानकारी पर लूपिंग कर रहा हूं और मैं इससे संबंधित सभी डेटाटाइम प्रारूप प्राप्त कर रहा हूं और उन पर लूपिंग कर रहा हूं। फिर मैं दिनांक dtDate . को रूपांतरित करने का प्रयास कर रहा हूं एक स्वरूपित स्ट्रिंग के लिए घोषित और इसे आउटपुट कॉलम में असाइन करें।

इसलिए यदि DT_DBTIMESTAMP आउटपुट कॉलम में निर्दिष्ट प्रारूप के साथ स्ट्रिंग मान निर्दिष्ट करना स्वीकार किया जाता है, तो इसका मतलब है कि प्रारूप अंतर्निहित रूपांतरित है

Output0Buffer.OutDate = dtDate.ToString(strFormat)

और यहां परिणाम फ़ाइल का लिंक दिया गया है:

  • Result.txt

SQL सर्वर डेटाटाइम लागू रूपांतरण

दो डेटाटाइम स्ट्रिंग प्रारूप हैं जिनकी किसी भी भाषा सेटिंग के साथ सही ढंग से व्याख्या की जाती है।

yyyyMMdd
yyyy-MM-ddTHH:mm:ss    (ISO8601)

साथ ही, आप वही प्रयोग दोहरा सकते हैं लेकिन इस बार SqlCommand . बनाकर और इसे क्रियान्वित करना:

Dim sqlcmd as new SqlCommand("SELECT CONVERT(DATETIME,'" + dtdate.ToString(strFormat) + '")"

sqlCmd.ExecuteReader()

इस तरह आप कर सकते हैं यदि sqlcmd अपवाद फेंकता है तो इसका मतलब है कि प्रारूप को परिवर्तित नहीं किया जा सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एंटिटी फ्रेमवर्क से एकल रिकॉर्ड हटाएं?

  2. Mac पर Azure डेटा स्टूडियो कैसे स्थापित करें

  3. SQL सर्वर में एक पहचान कॉलम का मूल बीज लौटाएं

  4. इकाई ढांचे के माध्यम से टी-एसक्यूएल संग्रहित प्रो में इनट्स की सरणी पास करना

  5. एक कॉलम (टी-एसक्यूएल) में एकाधिक मान कैसे वापस करें?