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.