Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Konversi Implisit Format Sumber SSIS untuk Datetime

Info Umum

Ini adalah format default tipe data datetimes (saat mengonversi dari string)

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]

Catatan:DT_DATE dan DT_DBTIMESTAMP memiliki metode SET yang sama

Dan menurut saya mengonversi string menjadi tanggal juga bergantung pada info budaya Anda saat ini

Informasi lebih rinci ditemukan di sini

  • Jenis Data Layanan Integrasi
  • TERJEMAHAN JENIS DATA SSIS KE SQL SERVER

Eksperimen :

Setelah membaca komentar Anda, saya tidak menemukan artikel terkait dengan pertanyaan Anda, jadi saya melakukan eksperimen berikut:

Konversi tanggal-waktu implisit SSIS

saya membuat paket SSIS dengan Dataflowtask. dalam tugas aliran data ini saya membuat Komponen Skrip (sebagai Sumber) dan Tujuan File Datar. Script memiliki satu kolom keluaran OutDate dari jenis DT_DbTimeStamp Di dalam skrip saya menggunakan kode berikut:

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

Pertama saya mengulang semua info budaya dan saya Mendapatkan semua format datetime yang terkait dengannya dan mengulangnya. Kemudian saya mencoba mengonversi tanggal dtDate dideklarasikan ke string yang diformat dan ditetapkan ke kolom Output.

Jadi jika menetapkan nilai string dengan format yang ditentukan ke kolom output DT_DBTIMESTAMP diterima, itu berarti format tersebut dikonversi secara implisit

Output0Buffer.OutDate = dtDate.ToString(strFormat)

Dan Ini Link File Hasil :

  • Hasil.txt

Konversi Implisit datetime SQL Server

Ada dua format string datetime yang ditafsirkan dengan benar dengan pengaturan bahasa apa pun.

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

Juga, Anda dapat mengulangi eksperimen yang sama Tapi kali ini dengan membuat SqlCommand dan menjalankannya:

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

sqlCmd.ExecuteReader()

Dengan begitu Anda bisa jika sqlcmd mengeluarkan pengecualian itu berarti format tidak dapat dikonversi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana melakukan INSERT Pass-Through Query di SQL Server

  2. Database yang dapat menangani>500 juta baris

  3. Menghubungkan Delphi di Linux ke SQL Server

  4. Bagaimana cara melakukan GROUP BY yang peka huruf besar-kecil?

  5. Cara Mengatur Warna Bilah Status di SSMS untuk Berbagai Instance SQL Server - Tutorial SQL Server / TSQL Bagian 6